Sylph는 NOAA IBTrACS의 열대 저기압 CSV 데이터를 구문 분석하여 MongoDB 데이터베이스에 저장하고 이에 액세스할 수 있는 RESTful API를 제공하는 ASP.NET 웹 서비스입니다. Sylph는 고도로 구성 가능하지만 IBTrACS가 매주 두 번 업데이트되므로 실시간 데이터를 제공하지 않습니다.
Sylph는 AGPL-3.0 이상에 따라 라이센스가 부여된 무료 소프트웨어입니다.
현재 WIP
편집
용법
.NET 5 SDK
이 리포지토리를 복제한 후 다음을 사용하여 프로젝트 루트 폴더에 appsettings.json
파일을 만듭니다.
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
MongoDB 세부정보를 입력합니다. 데이터베이스와 컬렉션은 수동으로 생성해야 합니다. Sylph는 이를 생성하지 않으며 존재하지 않으면 실패합니다.
참조: MongoDB에서 데이터베이스 생성
IDE(Visual Studio, Rider) 또는 닷넷을 사용하여 간단히 구축하세요. 포함된 실행 프로필이 작동하지 않는 경우 로컬 테스트를 위해 자체 시작 프로필을 생성해야 합니다.
다음 NuGet 패키지가 필요합니다.
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+이는 자동으로 설치되어야 합니다.
배포 환경은 Azure와 같은 ASP.NET Core 5.0을 지원해야 합니다. 구성하면 이전 버전을 사용할 수도 있습니다.
구문 분석된 데이터는 무료 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 타임스탬프입니다. |
폭풍속도 | 정수 | 매듭 | STORM_SPEED | 이 타임스탬프의 폭풍 속도입니다. |
풍속 | 정수 | 매듭 | USA_WIND | 이 타임스탬프의 풍속입니다. |
고양이 | 정수 | 매듭 | STORM_SPEED | 이 타임스탬프에서 이 폭풍의 Saffir-Simpson 규모 범주입니다. -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] |
dist2land | 정수 | 킬로미터 | 디스트투랜드 | 현재 위치에서 착륙까지의 거리입니다. 1400km^2보다 큰 모든 대륙과 섬을 포함합니다. |
(1노트 = 1.852km/h | 1.151mph)
IBTrACS 열에 대한 자세한 내용을 보려면 여기를 클릭하세요.