Sylph は、NOAA IBTrACS からの熱帯低気圧の CSV データを解析し、MongoDB データベースに保存し、それにアクセスするための RESTful API を提供する ASP.NET Web サービスです。 Sylph は高度に構成可能ですが、IBTrACS は週に 2 回更新されるため、リアルタイム データは提供されません。
Sylph は、AGPL-3.0 以降でライセンス供与されたフリー ソフトウェアです。
現在作業中です
編集
使用法
.NET 5 SDK
このリポジトリのクローンを作成した後、次の内容を含むappsettings.json
ファイルをプロジェクトのルート フォルダーに作成します。
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
MongoDB の詳細を入力します。データベースとコレクションは手動で作成する必要があります。 Sylph はそれらを作成せず、存在しない場合は失敗します。
参照: MongoDB でのデータベースの作成
IDE (Visual Studio、Rider) または dotnet を使用して簡単に構築できます。付属の起動プロファイルが機能しない場合は、ローカル テスト用に独自の起動プロファイルを作成する必要があります。
次の NuGet パッケージが必要です。
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+これらは自動的にインストールされるはずです。
デプロイ環境は、Azure などの ASP.NET Core 5.0 をサポートする必要があります。古いバージョンを設定すれば使用できる場合があります。
解析されたデータは、無料の MongoDB Atlas インスタンスに収まるほど小さいです。
https://{host}/hurricane/api
パラメータ | タイプ | デフォルト | 説明 | ユニット |
---|---|---|---|---|
開始日 | 長整数/int64 | 0 | 指定時間以降に発生した熱帯低気圧に限定します。 実質的には datapoints.0.time >= startdate | UNIX秒 |
終了日 | 長整数/int64 | Int64.MaxValue | 指定時刻より前に発生した熱帯低気圧に限定します。 事実上、datapoints.0.time <= enddate | UNIX秒 |
最高速度 | ushort/int32 | Int32.MaxValue | 最大速度がこの値を超えていない熱帯低気圧に限定 | 結び目 |
アクティブ | short/int16 | 2 | 活動中、非活動中、またはその両方の熱帯低気圧に限定します。active=1 アクティブな熱帯低気圧を返し、 active=0 非アクティブな熱帯低気圧を返します。他の値は、アクティブと非アクティブの両方を返します。 | |
名前 | 弦 | 空の | name フィールドに指定された文字列が含まれる熱帯低気圧に限定します。 | |
選別 | 弦 | 説明 | 熱帯低気圧を ID (実質的な開始時間) に基づいて昇順 ( asc ) または降順 ( desc ) で並べ替えます。 |
https://{host}/hurricane/api?startdate=1604447200&enddate=1608847400&active=1
[
{
"id" : " 2020360S16057 " ,
"name" : " CHALANE " ,
"active" : true ,
"maxSpeed" : 18 ,
"firstActive" : 1608847200 ,
"lastActive" : 1609279200 ,
"datapoints" : [
{
"lat" : -15.8 ,
"lon" : 56.5 ,
"time" : 1608847200 ,
"stormSpeed" : 9 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 492
},
{
"lat" : -15.8703 ,
"lon" : 56.0302 ,
"time" : 1608858000 ,
"stormSpeed" : 9 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 495
},
{
"lat" : -15.9 ,
"lon" : 55.6 ,
"time" : 1608868800 ,
"stormSpeed" : 8 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 511
},
{
"lat" : -15.8772 ,
"lon" : 55.2222 ,
"time" : 1608879600 ,
"stormSpeed" : 8 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 506
},
{
"lat" : -15.9 ,
"lon" : 54.8 ,
"time" : 1608890400 ,
"stormSpeed" : 10 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 463
},
{
"lat" : -16.1229 ,
"lon" : 54.1781 ,
"time" : 1608901200 ,
"stormSpeed" : 12 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 403
},
{
"lat" : -16.3 ,
"lon" : 53.6 ,
"time" : 1608912000 ,
"stormSpeed" : 8 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 346
},
{
"lat" : -16.1721 ,
"lon" : 53.3122 ,
"time" : 1608922800 ,
"stormSpeed" : 6 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 312
},
{
"lat" : -16 ,
"lon" : 53.1 ,
"time" : 1608933600 ,
"stormSpeed" : 5 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 286
},
{
"lat" : -15.9896 ,
"lon" : 52.8247 ,
"time" : 1608944400 ,
"stormSpeed" : 7 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 255
},
{
"lat" : -16.1 ,
"lon" : 52.4 ,
"time" : 1608955200 ,
"stormSpeed" : 11 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 217
},
{
"lat" : -16.298 ,
"lon" : 51.6876 ,
"time" : 1608966000 ,
"stormSpeed" : 15 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 159
},
{
"lat" : -16.6 ,
"lon" : 50.9 ,
"time" : 1608976800 ,
"stormSpeed" : 15 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 100
},
{
"lat" : -16.9997 ,
"lon" : 50.2627 ,
"time" : 1608987600 ,
"stormSpeed" : 14 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 57
},
{
"lat" : -17.4 ,
"lon" : 49.7 ,
"time" : 1608998400 ,
"stormSpeed" : 12 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 31
},
{
"lat" : -17.6947 ,
"lon" : 49.1923 ,
"time" : 1609009200 ,
"stormSpeed" : 11 ,
"windSpeed" : 32 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -17.9 ,
"lon" : 48.7 ,
"time" : 1609020000 ,
"stormSpeed" : 10 ,
"windSpeed" : 29 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -18.015 ,
"lon" : 48.1497 ,
"time" : 1609030800 ,
"stormSpeed" : 11 ,
"windSpeed" : 27 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -18.1 ,
"lon" : 47.6 ,
"time" : 1609041600 ,
"stormSpeed" : 10 ,
"windSpeed" : 25 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -18.2048 ,
"lon" : 47.0921 ,
"time" : 1609052400 ,
"stormSpeed" : 10 ,
"windSpeed" : 25 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -18.4 ,
"lon" : 46.6 ,
"time" : 1609063200 ,
"stormSpeed" : 11 ,
"windSpeed" : 25 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -18.8 ,
"lon" : 46.078 ,
"time" : 1609074000 ,
"stormSpeed" : 12 ,
"windSpeed" : 27 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -19.2 ,
"lon" : 45.6 ,
"time" : 1609084800 ,
"stormSpeed" : 10 ,
"windSpeed" : 29 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -19.372 ,
"lon" : 45.2643 ,
"time" : 1609095600 ,
"stormSpeed" : 7 ,
"windSpeed" : 29 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -19.5 ,
"lon" : 44.9 ,
"time" : 1609106400 ,
"stormSpeed" : 10 ,
"windSpeed" : 29 ,
"cat" : -1 ,
"dist2land" : 0
},
{
"lat" : -19.7627 ,
"lon" : 44.3436 ,
"time" : 1609117200 ,
"stormSpeed" : 12 ,
"windSpeed" : 32 ,
"cat" : -1 ,
"dist2land" : 10
},
{
"lat" : -20 ,
"lon" : 43.7 ,
"time" : 1609128000 ,
"stormSpeed" : 13 ,
"windSpeed" : 35 ,
"cat" : 0 ,
"dist2land" : 69
},
{
"lat" : -20.1136 ,
"lon" : 43.0336 ,
"time" : 1609138800 ,
"stormSpeed" : 12 ,
"windSpeed" : 36 ,
"cat" : 0 ,
"dist2land" : 122
},
{
"lat" : -20.1321 ,
"lon" : 42.4238 ,
"time" : 1609149600 ,
"stormSpeed" : 10 ,
"windSpeed" : 37 ,
"cat" : 0 ,
"dist2land" : 174
},
{
"lat" : -20.0883 ,
"lon" : 41.9322 ,
"time" : 1609160400 ,
"stormSpeed" : 8 ,
"windSpeed" : 38 ,
"cat" : 0 ,
"dist2land" : 220
},
{
"lat" : -20 ,
"lon" : 41.6 ,
"time" : 1609171200 ,
"stormSpeed" : 3 ,
"windSpeed" : 39 ,
"cat" : 0 ,
"dist2land" : 252
},
{
"lat" : -19.9043 ,
"lon" : 41.666 ,
"time" : 1609182000 ,
"stormSpeed" : 2 ,
"windSpeed" : 42 ,
"cat" : 0 ,
"dist2land" : 250
},
{
"lat" : -19.8 ,
"lon" : 41.6 ,
"time" : 1609192800 ,
"stormSpeed" : 8 ,
"windSpeed" : 45 ,
"cat" : 0 ,
"dist2land" : 264
},
{
"lat" : -19.6861 ,
"lon" : 40.8546 ,
"time" : 1609203600 ,
"stormSpeed" : 16 ,
"windSpeed" : 45 ,
"cat" : 0 ,
"dist2land" : 330
},
{
"lat" : -19.6 ,
"lon" : 39.9 ,
"time" : 1609214400 ,
"stormSpeed" : 16 ,
"windSpeed" : 45 ,
"cat" : 0 ,
"dist2land" : 302
},
{
"lat" : -19.5774 ,
"lon" : 39.1327 ,
"time" : 1609225200 ,
"stormSpeed" : 13 ,
"windSpeed" : 49 ,
"cat" : 0 ,
"dist2land" : 277
},
{
"lat" : -19.6 ,
"lon" : 38.5 ,
"time" : 1609236000 ,
"stormSpeed" : 10 ,
"windSpeed" : 54 ,
"cat" : 0 ,
"dist2land" : 229
},
{
"lat" : -19.6865 ,
"lon" : 38.1155 ,
"time" : 1609246800 ,
"stormSpeed" : 8 ,
"windSpeed" : 57 ,
"cat" : 0 ,
"dist2land" : 208
},
{
"lat" : -19.7 ,
"lon" : 37.7 ,
"time" : 1609257600 ,
"stormSpeed" : 11 ,
"windSpeed" : 60 ,
"cat" : 0 ,
"dist2land" : 172
},
{
"lat" : -19.514 ,
"lon" : 36.9938 ,
"time" : 1609268400 ,
"stormSpeed" : 16 ,
"windSpeed" : 60 ,
"cat" : 0 ,
"dist2land" : 99
},
{
"lat" : -19.2 ,
"lon" : 36.1 ,
"time" : 1609279200 ,
"stormSpeed" : 18 ,
"windSpeed" : 60 ,
"cat" : 0 ,
"dist2land" : 30
}
]
}
]
財産 | タイプ | ユニット | IBTrACS コラム | 説明 |
---|---|---|---|---|
ID | 弦 | 該当なし | シド | ストーム識別子 |
名前 | 弦 | 該当なし | 名前 | 代理店が付けた名前です。これらは時間の経過とともに変化する可能性があります。 |
アクティブ | ブール値 | 該当なし | 該当なし | 嵐が現在活動しているかどうか。 |
最大速度 | 整数 | 結び目 | 該当なし | 嵐がその存続期間中に到達した最大速度。 |
最初のアクティブ | 長さ | UNIX秒 | ISO_TIME | この嵐の活動が観測されたのは初めて。 |
最後にアクティブ | 長さ | UNIX秒 | ISO_TIME | この嵐が活動していることが最後に観察されたのはいつか。 |
データポイント | 配列 | 該当なし | 該当なし | さまざまな時点での嵐のデータの一部を保持する配列 |
財産 | タイプ | ユニット | IBTrACS コラム | 説明 |
---|---|---|---|---|
緯度 | フロート | 北度 | ラテン語 | このタイムスタンプの緯度。 |
ロン | フロート | 東経度 | ロン | このタイムスタンプの経度。 |
時間 | 長さ | UNIX秒 | ISO_TIME | このデータ ポイントの UNIX タイムスタンプ。 |
嵐の速度 | 整数 | 結び目 | 嵐の速度 | このタイムスタンプにおけるストーム速度。 |
風速 | 整数 | 結び目 | アメリカ_風 | このタイムスタンプの風速。 |
猫 | 整数 | 結び目 | 嵐の速度 | このタイムスタンプにおけるこの嵐のサファー・シンプソン規模カテゴリー。 -5 = 不明 [XX] -4 = ポストトロピカル [EX、ET、PT] -3 = その他の妨害 [WV、LO、DB、DS、IN、MD] -2 = 亜熱帯 [SS、SD] 風速に基づいて分類された熱帯系 [TD、TS、HU、TY、、TC、ST、HR] -1 = 熱帯低気圧 (W<34) 0 = 熱帯低気圧 [34 2 = カテゴリ 2 [83<=W<96] 3 = カテゴリ 3 [96<=W<113] 4 = カテゴリ 4 [113<=W<137] 5 = カテゴリ 5 [W >= 137] |
距離2ランド | 整数 | キロメートル | ディストツーランド | 現在位置から着陸までの距離。 1400 km^2 を超えるすべての大陸と島が含まれます。 |
(1 ノット = 1.852km/h | 1.151mph)
IBTrACS カラムについては、ここをクリックしてください。