solrpatrol/yii2-tle

基于 www.space-track.org API 的 Yii2 TLE 存储组件

安装: 8

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 0

开放问题: 1

类型:yii2-extension

1.3.0 2016-10-18 18:38 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:42:09 UTC


README

模块扩展为 Yii2 提供了 TLE 下载和存储组件。它依赖于 Space Track API 获取相关的 TLE 数据。

需求

此模块依赖于 CURL PHP 扩展

安装

为了使用此模块

  1. 将其添加到您的 Yii2 应用的 composer.json 文件中

     "solarpatrol/yii2-tle": "^1.0.0"
    

    或运行

     $ composer install solarpatrol/yii2-tle
    
  2. 将模块添加到应用的 配置 并设置 storage 组件

     'modules' => [
         'tle' => [
             'class' => 'solarpatrol\tle\Module',
             'components' => [
                 'storage' => [
                     'class' => 'solarpatrol\tle\FileStorage',
                     'actualDaysCount' => 10,
                     'storagePath' => '@runtime/tle',
                     'spaceTrackLogin' => 'myspace',
                     'spaceTrackPassword' => 'passw0rd',
                     'dirMode' => 0777,
                     'fileMode' => 0666,
                     ...
                 ]
             ]
         ]
         ...
     ]
    

    请参阅 配置 部分,了解如何配置 storage 组件。

  3. 如果使用模块的 Web 和控制台控制器和动作(当不计划直接访问模块 \Yii::$app->getModule('tle') 时)则将模块添加到引导阶段

  4. 如果使用 solarpatrol\tle\DatabaseStorage 作为 storage 组件,则应用模块迁移以创建存储 TLE 的表

     ./yii migrate --migrationPath=@vendor/solarpatrol/yii2-tle/migrations
    

使用

访问 TLE 存储组件

$storage = \Yii::$app->getModule('tle')->storage;

下载 Terra、Aqua 和 Meteor-M №2 卫星在 3 天范围内的实际 TLE,并将它们添加到存储中(卫星通过其 NORAD ids 识别)

$storage->update([25994, 27424, 40069], time() - 86400 * 3, time());

手动将 Terra 的 TLE 添加到存储中(不建议)

$storage->add([
    '0 25994',
    '1 40069U 14037A   16200.39183603 -.00000022  00000-0  99041-5 0  9999',
    '2 40069  98.7043 255.1534 0006745  96.2107 263.9838 14.20632312105160'
]);

获取指定时间范围内存储中 Terra 的所有 TLE

$tles = $storage->get(25994, '2016-07-18', '2016-07-20T23:59:59');

获取指定时间范围内存储中 Terra 和 Aqua 的所有 TLE(结果是一个关联数组,其中键是卫星的 NORAD 标识符,值是找到的 TLE 数组)

$tles = $storage->get([25994, 27424], '2016-07-18', '2016-07-20T23:59:59');

在指定时间范围内找到 Terra 的最接近的实际 TLE

$tles = $storage->get(25994, '2016-07-18', '2016-07-20T23:59:59');
$tle = Storage::getClosest($tles, '2016-07-19T16:44:44');

手动从存储中删除 Terra TLE(不建议)

$storage->remove([
    '0 25994',
    '1 40069U 14037A   16200.39183603 -.00000022  00000-0  99041-5 0  9999',
    '2 40069  98.7043 255.1534 0006745  96.2107 263.9838 14.20632312105160'
]);

获取所有已知发射卫星的列表

$satellites = $storage->getSatcat();
foreach($satellites as $satellite) {
    print $satellite['id'] . ' ' . $satellite['name'] . "\n";
}

配置

支持 solarpatrol\tle\Storage 组件的两个实现

  • solarpatrol\tle\FileStorage — 在文件系统中存储 TLE;
  • solarpatrol\tle\DatabaseStorage — 在数据库中存储 TLE。

它们都具有以下共同的敏感配置属性

  • actualDaysCount — 如果未指定时间范围的开始和结束,则执行请求操作时使用的天数(默认为 5);
  • spaceTrackLoginSpace Track 账户的名称(电子邮件),可以在 此处 创建(必需);
  • spaceTrackPassword — Space Track 账户的密码(必需);
  • connectionTimeout — 对 Space Track API 的 CURL 请求的超时时间(默认为 30);
  • enableCaching — 是否缓存 CURL 请求的结果(默认为 true);
  • cacheExpiration — 缓存过期时间(默认为 21600);
  • userAgent — 为 Space Track API 的 CURL 请求设置用户代理头部;
  • proxyHost — 代理主机(如果使用);
  • proxyPort — 代理端口(如果使用);
  • proxyAuthLogin — 代理认证登录(如果代理需要认证);
  • proxyAuthPassword — 代理认证密码(如果代理需要认证)。

FileStorage 具有以下附加属性

  • storagePath — 存储TLE文件的目录路径(默认为@runtime/tle);
  • dirMode — 目录创建模式(默认为0775);
  • fileMode — 文件创建模式。

DatabaseStorage具有以下附加属性

  • db — 用于访问TLE表的数据库连接名称、配置数组或实例(默认为db)。

Web请求

为了使用内置的web控制器,请在web应用的引导配置中指定模块

'bootstrap' => ['tle', ...other modules],
'modules' => [
    'tle' => [
        'components' => [
            'storage' => [
                'class' => 'solarpatrol\tle\FileStorage',
                ...
            ]
        ]
    ]
],
...

并运行web操作

/tle/request?id[]=25994&id[]=27424&startTime=2016-09-21&endTime=2016-09-23T23:59:59

如果您想更改控制器的标识符(默认为tle),请设置webControllerId

'module' => 
    'class' => 'solarpatrol\tle\FileStorage',
    'webControllerId` => 'orbit`
]

运行web操作

/orbit/request?id[]=25994&id[]=27424&startTime=2016-09-21&endTime=2016-09-23T23:59:59

以下web操作可用

  1. 请求给定卫星在给定时间范围内的TLE

     /tle/request
    
    • id是卫星的NORAD标识符数组;
    • startTime是时间范围的开始,使用ISO 8601或Unix时间戳(可选,如果省略,则使用endTimeactualDaysCount天的时间);
    • endTime是时间范围的结束,使用ISO 8601或Unix时间戳(可选,如果省略,则使用当前系统时间);
    • download如果设置为true,则尝试下载存储中缺失的TLE。

    示例

    • 请求Terra和Aqua最近五天的TLE

        /tle/request?id[]=25994&id[]=27424
      
    • 请求Terra、Aqua和Meteor-M №2在2016年9月21日至2016年9月23日的时间范围内的TLE

        /tle/request?id[]=25994&id[]=27424id[]=40069&startTime=2016-09-21&endTime=2016-09-23T23:59:59
      

控制台命令

为了使用控制台命令,请在控制台应用的引导配置中指定模块

'bootstrap' => ['tle', ...other modules],
'modules' => [
    'tle' => [
        'components' => [
            'storage' => [
                'class' => 'solarpatrol\tle\FileStorage',
                ...
            ]
        ]
    ]
],
...

并运行命令

./yii tle/update 25994

如果您想更改控制器的标识符(默认为tle),请设置consoleControllerId

'module' => 
    'class' => 'solarpatrol\tle\FileStorage',
    'consoleControllerId` => 'orbit`
]

运行命令

./yii orbit/update 25994

以下控制台命令可用

  1. 下载TLE并保存到存储中(默认)

     ./yii tle/update [ids] [--existing] [--all] [--startTime] [--endTime]
    

    其中

    • ids是一组NORAD标识符(当existingall参数都省略时使用);
    • existing根据存储中已存在的TLE自动确定ids
    • all根据所有已知发射的卫星的卫星目录自动确定ids
    • startTime是时间范围的开始,使用ISO 8601或Unix时间戳(可选,如果省略,则使用endTimeactualDaysCount天的时间);
    • endTime是时间范围的结束,使用ISO 8601或Unix时间戳(可选,如果省略,则使用当前系统时间);

    示例

    • 下载并保存Terra和Aqua最近五天的TLE

        ./yii tle/update 25994 27424
      
    • 下载并保存Terra、Aqua和Meteor-M №2在2016年9月21日至2016年9月23日的时间范围内的TLE

        ./yii tle/update 25994 27424 40069 --startTime=2016-09-21 --endTime=2016-09-23T23:59:59
      
    • 下载存储中已存在的所有卫星的TLE

        ./yii tle/update --existing
      
    • 下载所有已知发射的卫星的TLE

        ./yii tle/update --all
      

贡献

在提交拉取请求之前,请确保您的更改已经合并到dev分支。