Sylph ist ein ASP.NET-Webdienst, der CSV-Daten tropischer Wirbelstürme von NOAA IBTrACS analysiert, sie in einer MongoDB-Datenbank speichert und eine RESTful-API für den Zugriff bereitstellt. Sylph ist hochgradig konfigurierbar, liefert jedoch keine Echtzeitdaten, da IBTrACS zweimal wöchentlich aktualisiert wird.
Sylph ist freie Software, die unter AGPL-3.0 oder höher lizenziert ist.
Derzeit in Bearbeitung
Zusammenstellung
Verwendung
.NET 5 SDK
Erstellen Sie nach dem Klonen dieses Repositorys eine appsettings.json
Datei im Stammordner des Projekts mit Folgendem:
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
Geben Sie die MongoDB-Details ein. Die Datenbank und Sammlung müssen manuell erstellt werden. Sylph erstellt sie nicht und wird scheitern, wenn sie nicht existieren.
Siehe: Erstellen einer Datenbank in MongoDB
Erstellen Sie einfach mit Ihrer IDE (Visual Studio, Rider) oder Dotnet. Sie müssen Ihr eigenes Startprofil für lokale Tests erstellen, falls das enthaltene nicht funktioniert.
Die folgenden NuGet-Pakete sind erforderlich:
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+Diese sollten automatisch installiert werden.
Ihre Bereitstellungsumgebung muss ASP.NET Core 5.0 wie Azure unterstützen. Möglicherweise können Sie eine ältere Version verwenden, wenn Sie diese konfigurieren.
Die geparsten Daten sind klein genug, um in eine kostenlose MongoDB Atlas-Instanz zu passen.
https://{host}/hurricane/api
Parameter | Typ | Standard | Beschreibung | Einheit |
---|---|---|---|---|
Startdatum | long/int64 | 0 | Beschränkung auf tropische Wirbelstürme , die nach der angegebenen Zeit begannen . Tatsächlich datapoints.0.time >= startdate | UNIX-Sekunden |
Enddatum | long/int64 | Int64.MaxValue | Beschränkung auf tropische Wirbelstürme , die vor der angegebenen Zeit begonnen haben . Tatsächlich datapoints.0.time <= enddate | UNIX-Sekunden |
Höchstgeschwindigkeit | ushort/int32 | Int32.MaxValue | Beschränkung auf tropische Wirbelstürme, deren Höchstgeschwindigkeit diesen Wert nicht überschreitet | Knoten |
aktiv | short/int16 | 2 | Beschränken Sie sich auf tropische Wirbelstürme, die aktiv, inaktiv oder beides sind.active=1 gibt aktive tropische Wirbelstürme zurück, active=0 gibt inaktive zurück.Jeder andere Wert gibt sowohl aktiv als auch inaktiv zurück. | |
Name | Zeichenfolge | leer | Auf tropische Wirbelstürme beschränken, deren name die angegebene Zeichenfolge enthält. | |
Sortieren | Zeichenfolge | absteigend | Sortieren Sie tropische Wirbelstürme in aufsteigender ( asc ) oder absteigender ( desc ) Reihenfolge basierend auf ihrer ID (effektiv Startzeit). |
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
}
]
}
]
Eigentum | Typ | Einheit | IBTrACS-Spalte | Beschreibung |
---|---|---|---|---|
Ausweis | Zeichenfolge | n / A | SID | Sturmkennung |
Name | Zeichenfolge | n / A | NAME | Ein von der Agentur bereitgestellter Name. Diese können sich im Laufe der Zeit ändern. |
aktiv | Boolescher Wert | n / A | n / A | Ob der Sturm gerade aktiv ist oder nicht. |
maxGeschwindigkeit | int | Knoten | n / A | Die maximale Geschwindigkeit, die der Sturm in seinem Leben erreicht hat. |
firstActive | lang | UNIX-Sekunden | ISO_TIME | Das erste Mal wurde beobachtet, dass dieser Sturm aktiv war. |
lastActive | lang | UNIX-Sekunden | ISO_TIME | Das letzte Mal wurde beobachtet, dass dieser Sturm aktiv war. |
Datenpunkte | Array | n / A | n / A | Ein Array, das einige Sturmdaten zu verschiedenen Zeitpunkten enthält |
Eigentum | Typ | Einheit | IBTrACS-Spalte | Beschreibung |
---|---|---|---|---|
lat | schweben | Grad Nord | LAT | Der Breitengrad zu diesem Zeitstempel. |
lon | schweben | Grad Ost | LON | Der Längengrad zu diesem Zeitstempel. |
Zeit | lang | UNIX-Sekunden | ISO_TIME | Der UNIX-Zeitstempel dieses Datenpunkts. |
StormSpeed | int | Knoten | STURM_GESCHWINDIGKEIT | Die Sturmgeschwindigkeit zu diesem Zeitstempel. |
Windgeschwindigkeit | int | Knoten | USA_WIND | Die Windgeschwindigkeit zu diesem Zeitstempel. |
Katze | int | Knoten | STURM_GESCHWINDIGKEIT | Die Saffir-Simpson-Skalenkategorie dieses Sturms zu diesem Zeitpunkt. -5 = Unbekannt [XX] -4 = Posttropisch [EX, ET, PT] -3 = Sonstige Störungen [WV, LO, DB, DS, IN, MD] -2 = Subtropisch [SS, SD] Tropische Systeme klassifiziert nach Windgeschwindigkeiten [TD, TS, HU, TY,, TC, ST, HR] -1 = Tropisches Tiefdruckgebiet (W<34) 0 = Tropischer Sturm [34 2 = Kategorie 2 [83<=W<96] 3 = Kategorie 3 [96<=W<113] 4 = Kategorie 4 [113<=W<137] 5 = Kategorie 5 [W >= 137] |
dist2land | int | Kilometer | DIST2LAND | Entfernung zur Landung von der aktuellen Position. Umfasst alle Kontinente und Inseln, die größer als 1400 km^2 sind. |
(1 Knoten = 1,852 km/h | 1,151 mph)
Für Informationen zu IBTrACS-Spalten klicken Sie hier.