Sylph es un servicio web ASP.NET que analiza datos CSV de ciclones tropicales de NOAA IBTrACS, los almacena en una base de datos MongoDB y proporciona una API RESTful para acceder a ellos. Sylph es altamente configurable, pero no proporciona datos en tiempo real, ya que IBTrACS se actualiza dos veces por semana.
Sylph es un software gratuito con licencia AGPL-3.0 o posterior.
Actualmente en trabajo en curso
Compilación
Uso
SDK de .NET 5
Después de clonar este repositorio, cree un archivo appsettings.json
en la carpeta raíz del proyecto con lo siguiente:
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
Complete los detalles de MongoDB. La base de datos y la colección deben crearse manualmente. Sylph no los crea y fallará si no existen.
Ver: Crear una base de datos en MongoDB
Simplemente cree usando su IDE (Visual Studio, Rider) o dotnet. Debe crear su propio perfil de lanzamiento para pruebas locales, si el incluido no funciona.
Se requieren los siguientes paquetes NuGet:
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+Estos deberían instalarse automáticamente.
Su entorno de implementación debe ser compatible con ASP.NET Core 5.0, como Azure. Es posible que puedas utilizar una versión anterior si la configuras.
Los datos analizados son lo suficientemente pequeños como para caber en una instancia gratuita de MongoDB Atlas.
https://{host}/hurricane/api
parámetro | tipo | por defecto | descripción | unidad |
---|---|---|---|---|
fecha de inicio | largo/int64 | 0 | Límite a ciclones tropicales iniciados después del tiempo especificado. Efectivamente puntos de datos.0.time >= fecha de inicio | Segundos UNIX |
fecha final | largo/int64 | Int64.MaxValue | Límite a ciclones tropicales iniciados antes de la hora especificada. Efectivamente datapoints.0.time <= fecha de finalización | Segundos UNIX |
velocidad máxima | ushort/int32 | Int32.MaxValue | Límite a ciclones tropicales cuya velocidad máxima no haya superado este valor | Nudos |
activo | corto/int16 | 2 | Limitar a ciclones tropicales que estén activos, inactivos o ambos.active=1 devuelve ciclones tropicales activos, active=0 devuelve ciclones inactivos.Cualquier otro valor devuelve tanto activo como inactivo. | |
nombre | cadena | vacío | Limitar a ciclones tropicales cuyo campo name contenga la cadena especificada. | |
clasificar | cadena | desc | ordenar los ciclones tropicales en orden ascendente ( asc ) o descendente ( desc ) según su ID (hora de inicio efectiva) |
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
}
]
}
]
propiedad | tipo | unidad | Columna IBTrACS | descripción |
---|---|---|---|---|
identificación | cadena | n / A | sid | Identificador de tormenta |
nombre | cadena | n / A | NOMBRE | Un nombre proporcionado por la agencia. Estos pueden cambiar con el tiempo. |
activo | booleano | n / A | n / A | Si la tormenta está actualmente activa o no. |
velocidad máxima | entero | Nudos | n / A | La velocidad máxima que ha alcanzado la tormenta en su vida. |
primeroActivo | largo | Segundos UNIX | ISO_TIME | La primera vez que se observó que esta tormenta estaba activa. |
último activo | largo | Segundos UNIX | ISO_TIME | La última vez que se observó que esta tormenta estaba activa. |
puntos de datos | formación | n / A | n / A | Una matriz que contiene algunos de los datos de la tormenta en diferentes momentos. |
propiedad | tipo | unidad | Columna IBTrACS | descripción |
---|---|---|---|---|
latitud | flotar | grados norte | LAT | Latitud en esta marca de tiempo. |
lon | flotar | grados este | lon | La longitud en esta marca de tiempo. |
tiempo | largo | Segundos UNIX | ISO_TIME | La marca de tiempo UNIX de este punto de datos. |
tormentaVelocidad | entero | Nudos | TORMENTA_VELOCIDAD | La velocidad de la tormenta en esta marca de tiempo. |
vientoVelocidad | entero | Nudos | EE.UU._VIENTO | La velocidad del viento en esta marca de tiempo. |
gato | entero | Nudos | TORMENTA_VELOCIDAD | La categoría de escala Saffir-Simpson de esta tormenta en esta marca de tiempo. -5 = Desconocido [XX] -4 = Posttropical [EX, ET, PT] -3 = Perturbaciones diversas [WV, LO, DB, DS, IN, MD] -2 = Subtropical [SS, SD] Sistemas tropicales clasificados según la velocidad del viento [TD, TS, HU, TY,, TC, ST, HR] -1 = Depresión tropical (W<34) 0 = Tormenta tropical [34 2 = Categoría 2 [83<=P<96] 3 = Categoría 3 [96<=P<113] 4 = Categoría 4 [113<=P<137] 5 = Categoría 5 [W >= 137] |
dist2landia | entero | kilómetros | DIST2LAND | Distancia al aterrizaje desde la posición actual. Incluye todos los continentes e islas mayores de 1400 km^2. |
(1 nudo = 1,852 km/h | 1,151 mph)
Para obtener información sobre las columnas IBTrACS, haga clic aquí.