solrpatrol / yii2-tle
基于 www.space-track.org API 的 Yii2 TLE 存储组件
Requires
- php: >=5.4.0
- yiisoft/yii2: >=2.0.9
This package is not auto-updated.
Last update: 2024-09-14 19:42:09 UTC
README
模块扩展为 Yii2 提供了 TLE 下载和存储组件。它依赖于 Space Track API 获取相关的 TLE 数据。
需求
此模块依赖于 CURL PHP 扩展。
安装
为了使用此模块
-
将其添加到您的 Yii2 应用的
composer.json
文件中"solarpatrol/yii2-tle": "^1.0.0"
或运行
$ composer install solarpatrol/yii2-tle
-
将模块添加到应用的 配置 并设置
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
组件。 -
如果使用模块的 Web 和控制台控制器和动作(当不计划直接访问模块
\Yii::$app->getModule('tle')
时)则将模块添加到引导阶段 -
如果使用
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
);spaceTrackLogin
— Space 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操作可用
-
请求给定卫星在给定时间范围内的TLE
/tle/request
id
是卫星的NORAD标识符数组;startTime
是时间范围的开始,使用ISO 8601或Unix时间戳(可选,如果省略,则使用endTime
前actualDaysCount
天的时间);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
以下控制台命令可用
-
下载TLE并保存到存储中(默认)
./yii tle/update [ids] [--existing] [--all] [--startTime] [--endTime]
其中
ids
是一组NORAD标识符(当existing
和all
参数都省略时使用);existing
根据存储中已存在的TLE自动确定ids
;all
根据所有已知发射的卫星的卫星目录自动确定ids
;startTime
是时间范围的开始,使用ISO 8601或Unix时间戳(可选,如果省略,则使用endTime
前actualDaysCount
天的时间);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
分支。