Sylph adalah layanan web ASP.NET yang mem-parsing data CSV siklon tropis dari NOAA IBTrACS, menyimpannya dalam database MongoDB dan menyediakan RESTful API untuk mengaksesnya. Sylph sangat dapat dikonfigurasi, namun tidak menyediakan data real-time, karena IBTrACS diperbarui dua kali seminggu.
Sylph adalah perangkat lunak gratis yang berlisensi AGPL-3.0 atau lebih baru.
Saat ini WIP
Kompilasi
Penggunaan
.NET 5 SDK
Setelah mengkloning repositori ini, buat file appsettings.json
di folder root proyek dengan yang berikut:
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
Isi detail MongoDB. Basis data dan koleksi harus dibuat secara manual. Sylph tidak menciptakannya dan akan gagal jika tidak ada.
Lihat: Membuat Database di MongoDB
Cukup buat menggunakan IDE Anda (Visual Studio, Rider) atau dotnet. Anda harus membuat profil peluncuran Anda sendiri untuk pengujian lokal, jika yang disertakan tidak berfungsi.
Paket NuGet berikut diperlukan:
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+Ini harus diinstal secara otomatis.
Lingkungan penerapan Anda harus mendukung ASP.NET Core 5.0, seperti Azure. Anda mungkin dapat menggunakan versi yang lebih lama jika Anda mengonfigurasinya.
Data yang diurai cukup kecil untuk dimasukkan ke dalam instance MongoDB Atlas gratis.
https://{host}/hurricane/api
parameter | jenis | bawaan | keterangan | satuan |
---|---|---|---|---|
tanggal mulai | panjang/int64 | 0 | Batasan siklon tropis dimulai setelah waktu yang ditentukan. Secara efektif datapoints.0.time >= tanggal mulai | UNIX detik |
tanggal akhir | panjang/int64 | Int64.Nilai Maks | Batasan siklon tropis dimulai sebelum waktu yang ditentukan. Secara efektif datapoints.0.time <= tanggal akhir | UNIX detik |
kecepatan maksimal | ushort/int32 | Int32.Nilai Maks | Batasan pada siklon tropis yang kecepatan maksimumnya belum melebihi nilai tersebut | simpul |
aktif | pendek/int16 | 2 | Batasi hanya pada siklon tropis yang aktif, tidak aktif, atau keduanya.active=1 mengembalikan siklon tropis aktif, active=0 mengembalikan siklon tropis yang tidak aktif.Nilai lainnya akan mengembalikan aktif dan tidak aktif. | |
nama | rangkaian | kosong | Batasi hanya untuk siklon tropis yang kolom name berisi string yang ditentukan. | |
menyortir | rangkaian | deskripsi | mengurutkan siklon tropis berdasarkan urutan naik ( asc ) atau menurun ( desc ) berdasarkan ID-nya (waktu mulai efektif) |
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
}
]
}
]
milik | jenis | satuan | Kolom IBTrACS | keterangan |
---|---|---|---|---|
pengenal | rangkaian | tidak ada | SID | Pengidentifikasi Badai |
nama | rangkaian | tidak ada | NAMA | Nama yang disediakan oleh agensi. Hal ini dapat berubah seiring waktu. |
aktif | boolean | tidak ada | tidak ada | Apakah badai tersebut sedang aktif atau tidak. |
kecepatan maksimal | ke dalam | simpul | tidak ada | Kecepatan maksimum yang pernah dicapai badai sepanjang masa hidupnya. |
pertamaAktif | panjang | UNIX detik | ISO_TIME | Pertama kali badai ini terpantau aktif. |
terakhirAktif | panjang | UNIX detik | ISO_TIME | Terakhir kali badai ini terpantau aktif. |
titik data | susunan | tidak ada | tidak ada | Array yang menyimpan beberapa data badai pada titik waktu berbeda |
milik | jenis | satuan | Kolom IBTrACS | keterangan |
---|---|---|---|---|
lat | mengambang | derajat utara | LAT | Garis lintang pada stempel waktu ini. |
lama | mengambang | derajat timur | LON | Garis bujur pada stempel waktu ini. |
waktu | panjang | UNIX detik | ISO_TIME | Stempel waktu UNIX dari titik data ini. |
kecepatan badai | ke dalam | simpul | STORM_SPEED | Kecepatan badai pada stempel waktu ini. |
kecepatan angin | ke dalam | simpul | AS_ANGIN | Kecepatan angin pada stempel waktu ini. |
kucing | ke dalam | simpul | STORM_SPEED | Kategori skala Saffir-Simpson dari badai ini pada stempel waktu ini. -5 = Tidak Diketahui [XX] -4 = Pasca tropis [EX, ET, PT] -3 = Gangguan lain-lain [WV, LO, DB, DS, IN, MD] -2 = Subtropis [SS, SD] Sistem tropis diklasifikasikan berdasarkan kecepatan angin [TD, TS, HU, TY,, TC, ST, HR] -1 = Depresi tropis (W<34) 0 = Badai tropis [34 2 = Kategori 2 [83<=W<96] 3 = Kategori 3 [96<=W<113] 4 = Kategori 4 [113<=W<137] 5 = Kategori 5 [W >= 137] |
dist2land | ke dalam | kilometer | DIST2LAND | Jarak mendarat dari posisi saat ini. Mencakup semua benua dan pulau yang luasnya lebih dari 1400 km^2. |
(1 Simpul = 1,852km/jam | 1,151mph)
Untuk informasi tentang kolom IBTrACS, klik di sini.