Sylph est un service Web ASP.NET qui analyse les données CSV des cyclones tropicaux de la NOAA IBTrACS, les stocke dans une base de données MongoDB et fournit une API RESTful pour y accéder. Sylph est hautement configurable, mais ne fournit pas de données en temps réel, car IBTrACS est mis à jour deux fois par semaine.
Sylph est un logiciel libre sous licence AGPL-3.0 ou version ultérieure.
Actuellement en cours
Compilation
Usage
Kit de développement logiciel .NET 5
Après avoir cloné ce référentiel, créez un fichier appsettings.json
dans le dossier racine du projet avec les éléments suivants :
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
Remplissez les détails de MongoDB. La base de données et la collection doivent être créées manuellement. Sylph ne les crée pas et échouera s'ils n'existent pas.
Voir : Créer une base de données dans MongoDB
Créez simplement en utilisant votre IDE (Visual Studio, Rider) ou dotnet. Vous devez créer votre propre profil de lancement pour les tests locaux, si celui inclus ne fonctionne pas.
Les packages NuGet suivants sont requis :
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+Ceux-ci devraient être installés automatiquement.
Votre environnement de déploiement doit prendre en charge ASP.NET Core 5.0, comme Azure. Vous pourrez peut-être utiliser une ancienne version si vous la configurez.
Les données analysées sont suffisamment petites pour tenir dans une instance MongoDB Atlas gratuite.
https://{host}/hurricane/api
paramètre | taper | défaut | description | unité |
---|---|---|---|---|
date de début | long/int64 | 0 | La limite aux cyclones tropicaux a commencé après l'heure spécifiée. Effectivement datapoints.0.time >= date de début | Secondes UNIX |
date de fin | long/int64 | Int64.MaxValue | Limite aux cyclones tropicaux déclenchés avant l'heure spécifiée. Effectivement datapoints.0.time <= date de fin | Secondes UNIX |
vitesse maximale | ushort/int32 | Int32.MaxValue | Limite aux cyclones tropicaux dont la vitesse maximale n'a pas dépassé cette valeur | Noeuds |
actif | court/int16 | 2 | Limité aux cyclones tropicaux actifs, inactifs ou les deux.active=1 renvoie les cyclones tropicaux actifs, active=0 renvoie les cyclones tropicaux inactifs.Toute autre valeur renvoie à la fois actif et inactif. | |
nom | chaîne | vide | Limité aux cyclones tropicaux dont le champ name contient la chaîne spécifiée. | |
trier | chaîne | desc | trier les cyclones tropicaux par ordre croissant ( asc ) ou décroissant ( desc ) en fonction de leur ID (heure de début effective) |
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
}
]
}
]
propriété | taper | unité | Colonne IBTrACS | description |
---|---|---|---|---|
identifiant | chaîne | n / A | SID | Identificateur de tempête |
nom | chaîne | n / A | NOM | Un nom fourni par l'agence. Ceux-ci peuvent changer avec le temps. |
actif | booléen | n / A | n / A | Si la tempête est actuellement active ou non. |
vitessemax | int | Noeuds | n / A | La vitesse maximale atteinte par la tempête au cours de sa vie. |
premierActive | long | Secondes UNIX | ISO_TIME | C'est la première fois que cette tempête a été observée comme étant active. |
dernier actif | long | Secondes UNIX | ISO_TIME | La dernière fois que cette tempête a été observée comme étant active. |
points de données | tableau | n / A | n / A | Un tableau qui contient certaines des données de la tempête à différents moments |
propriété | taper | unité | Colonne IBTrACS | description |
---|---|---|---|---|
latitude | flotter | degrés nord | LAT | La latitude à cet horodatage. |
lon | flotter | degrés est | LON | La longitude à cet horodatage. |
temps | long | Secondes UNIX | ISO_TIME | L'horodatage UNIX de ce point de données. |
tempêteVitesse | int | Noeuds | STORM_SPEED | La vitesse de la tempête à cet horodatage. |
vitesse du vent | int | Noeuds | USA_VENT | La vitesse du vent à cet horodatage. |
chat | int | Noeuds | STORM_SPEED | Catégorie à l'échelle Saffir-Simpson de cette tempête à cet horodatage. -5 = Inconnu [XX] -4 = Post-tropical [EX, ET, PT] -3 = Perturbations diverses [WV, LO, DB, DS, IN, MD] -2 = Subtropical [SS, SD] Systèmes tropicaux classés en fonction de la vitesse du vent [TD, TS, HU, TY, TC, ST, HR] -1 = Dépression tropicale (W<34) 0 = Tempête tropicale [34 2 = Catégorie 2 [83<=W<96] 3 = Catégorie 3 [96<=W<113] 4 = Catégorie 4 [113<=W<137] 5 = Catégorie 5 [W >= 137] |
dist2land | int | kilomètres | DIST2LAND | Distance jusqu'à atterrir depuis la position actuelle. Comprend tous les continents et îles de plus de 1 400 km^2. |
(1 nœud = 1,852 km/h | 1,151 mph)
Pour plus d'informations sur les colonnes IBTrACS, cliquez ici.