Sylph
1.0.0
Sylph 是一個 ASP.NET Web 服務,它解析來自 NOAA IBTrACS 的熱帶氣旋 CSV 數據,將其儲存在 MongoDB 資料庫中,並提供 RESTful API 來存取它。 Sylph 具有高度可配置性,但不提供即時數據,因為 IBTrACS 每週更新兩次。
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+這些應該會自動安裝。
您的部署環境必須支援 ASP.NET Core 5.0,例如 Azure。如果您進行配置,也許可以使用舊版本。
解析的資料夠小,可以放入免費的 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 | 限制最大速度未超過此值的熱帶氣旋 | 結 |
積極的 | 短/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 時間戳記。 |
風暴速度 | 整數 | 結 | 風暴速度 | 此時間戳的風暴速度。 |
風速 | 整數 | 結 | 美國_WIND | 此時間戳的風速。 |
貓 | 整數 | 結 | 風暴速度 | 該風暴在此時間戳的薩菲爾-辛普森規模類別。 -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] |
距離之地 | 整數 | 公里 | 迪斯特蘭 | 從目前位置到著陸的距離。包括面積超過 1400 km^2 的所有大陸和島嶼。 |
(1 節 = 1.852 公里/小時 | 1.151 英里/小時)
有關 IBTrACS 列的信息,請按一下此處。