Sylph เป็นบริการเว็บ ASP.NET ที่แยกวิเคราะห์ข้อมูล CSV พายุหมุนเขตร้อนจาก NOAA IBTrACS จัดเก็บไว้ในฐานข้อมูล MongoDB และจัดเตรียม RESTful API เพื่อเข้าถึง Sylph สามารถกำหนดค่าได้สูง แต่ไม่ได้ให้ข้อมูลแบบเรียลไทม์ เนื่องจาก IBTrACS จะอัปเดตสัปดาห์ละสองครั้ง
Sylph เป็นซอฟต์แวร์ฟรีที่ได้รับอนุญาตภายใต้ AGPL-3.0 หรือใหม่กว่า
ปัจจุบัน วีไอพี
การรวบรวม
การใช้งาน
.NET 5 SDK
หลังจากโคลนพื้นที่เก็บข้อมูลนี้แล้ว ให้สร้างไฟล์ appsettings.json
ที่โฟลเดอร์รูทของโปรเจ็กต์โดยมีสิ่งต่อไปนี้:
{
"HurricaneDatabaseSettings" : {
"HurricaneCollectionName" : " " ,
"DatabaseName" : " " ,
"ConnectionString" : " "
}
}
กรอกรายละเอียด MongoDB ต้องสร้างฐานข้อมูลและคอลเลกชันด้วยตนเอง Sylph ไม่ได้สร้างมันขึ้นมาและจะล้มเหลวหากไม่มีอยู่จริง
โปรดดู: สร้างฐานข้อมูลใน MongoDB
เพียงสร้างโดยใช้ IDE ของคุณ (Visual Studio, Rider) หรือ dotnet คุณต้องสร้างโปรไฟล์การเปิดตัวของคุณเองสำหรับการทดสอบในพื้นที่ หากโปรไฟล์ที่รวมไว้นั้นใช้งานไม่ได้
จำเป็นต้องมีแพ็คเกจ NuGet ต่อไปนี้:
MongoDB.Driver
2.11.3+Quartz
3.2.2+Quartz.AspNetCore
3.2.2+ควรติดตั้งสิ่งเหล่านี้โดยอัตโนมัติ
สภาพแวดล้อมการปรับใช้ของคุณต้องรองรับ ASP.NET Core 5.0 เช่น Azure คุณอาจใช้เวอร์ชันเก่าได้หากคุณกำหนดค่า
ข้อมูลที่แยกวิเคราะห์มีขนาดเล็กพอที่จะใส่ในอินสแตนซ์ MongoDB Atlas ฟรีได้
https://{host}/hurricane/api
พารามิเตอร์ | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย | หน่วย |
---|---|---|---|---|
วันที่เริ่มต้น | ยาว/int64 | 0 | การจำกัดพายุหมุนเขตร้อน ที่เริ่มหลังจาก เวลาที่กำหนด datapoints.0.time >= startdate อย่างมีประสิทธิภาพ | ยูนิกซ์วินาที |
วันที่สิ้นสุด | ยาว/int64 | Int64.MaxValue | จำกัดเฉพาะพายุหมุนเขตร้อน ที่เริ่มก่อน เวลาที่กำหนด datapoints.0.time <= enddate อย่างมีประสิทธิภาพ | ยูนิกซ์วินาที |
ความเร็วสูงสุด | ushort/int32 | Int32.MaxValue | จำกัดเฉพาะพายุหมุนเขตร้อนที่มีความเร็วสูงสุดไม่เกินค่านี้ | นอต |
คล่องแคล่ว | สั้น/int16 | 2 | จำกัดเฉพาะพายุหมุนเขตร้อนที่ทำงานอยู่ หรือไม่ใช้งาน หรือทั้งสองอย่างactive=1 ส่งคืนพายุหมุนเขตร้อนที่ทำงานอยู่, active=0 ส่งคืนพายุหมุนที่ไม่ได้ใช้งานค่าอื่นๆ จะส่งกลับทั้งค่าใช้งานและค่าไม่ได้ใช้งาน | |
ชื่อ | เชือก | ว่างเปล่า | จำกัดเฉพาะพายุหมุนเขตร้อนที่ช่อง name มีสตริงที่ระบุ | |
เรียงลำดับ | เชือก | รายละเอียด | เรียงลำดับพายุหมุนเขตร้อนจากน้อยไปหามาก ( 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 | คำอธิบาย |
---|---|---|---|---|
รหัส | เชือก | ไม่มี | เอสไอดี | ตัวระบุพายุ |
ชื่อ | เชือก | ไม่มี | ชื่อ | ชื่อที่หน่วยงานให้ไว้ สิ่งเหล่านี้สามารถเปลี่ยนแปลงได้ตลอดเวลา |
คล่องแคล่ว | บูลีน | ไม่มี | ไม่มี | ไม่ว่าพายุจะมีกำลังแรงอยู่หรือไม่ก็ตาม |
ความเร็วสูงสุด | ภายใน | นอต | ไม่มี | ความเร็วสูงสุดที่พายุมีถึงในช่วงอายุของมัน |
ครั้งแรกที่ใช้งานอยู่ | ยาว | ยูนิกซ์วินาที | ISO_TIME | ครั้งแรกที่พบว่าพายุลูกนี้ยังมีฤทธิ์ |
ล่าสุดใช้งานอยู่ | ยาว | ยูนิกซ์วินาที | ISO_TIME | ครั้งล่าสุดที่พบว่าพายุลูกนี้ยังมีฤทธิ์ |
จุดข้อมูล | อาร์เรย์ | ไม่มี | ไม่มี | อาร์เรย์ที่เก็บข้อมูลบางส่วนของพายุ ณ จุดต่างๆ ของเวลา |
คุณสมบัติ | พิมพ์ | หน่วย | คอลัมน์ IBTrACS | คำอธิบาย |
---|---|---|---|---|
ละติจูด | ลอย | องศาเหนือ | ลาด | ละติจูด ณ เวลาประทับนี้ |
โหลน | ลอย | องศาตะวันออก | ลอน | ลองจิจูด ณ เวลาประทับนี้ |
เวลา | ยาว | ยูนิกซ์วินาที | ISO_TIME | การประทับเวลา UNIX ของจุดข้อมูลนี้ |
พายุความเร็ว | ภายใน | นอต | พายุ_ความเร็ว | ความเร็วของพายุ ณ เวลาประทับนี้ |
ความเร็วลม | ภายใน | นอต | สหรัฐอเมริกา_ลม | ความเร็วลม ณ เวลานี้ |
แมว | ภายใน | นอต | พายุ_ความเร็ว | หมวดหมู่มาตราส่วน 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 | ภายใน | กิโลเมตร | DIST2LAND | ระยะทางถึงที่ดินจากตำแหน่งปัจจุบัน รวมทุกทวีปและเกาะที่มีขนาดใหญ่กว่า 1,400 กม.^2 |
(1 นอต = 1.852 กม./ชม. | 1.151 ไมล์/ชม.)
สำหรับข้อมูลเกี่ยวกับคอลัมน์ IBTrACS คลิกที่นี่