Sylph هي خدمة ويب ASP.NET تقوم بتحليل بيانات الأعاصير الاستوائية CSV من NOAA IBTrACS، وتخزينها في قاعدة بيانات MongoDB وتوفر واجهة برمجة تطبيقات RESTful للوصول إليها. يعد Sylph قابلاً للتكوين بدرجة كبيرة، ولكنه لا يوفر بيانات في الوقت الفعلي، حيث يتم تحديث IBTrACS مرتين أسبوعيًا.
Sylph هو برنامج مجاني مرخص بموجب AGPL-3.0 أو الأحدث.
حاليا قيد التنفيذ
تجميع
الاستخدام
نت 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 >= تاريخ البدء | ثواني يونيكس |
تاريخ الانتهاء | طويل/int64 | Int64.MaxValue | بدأ الحد من الأعاصير المدارية قبل الوقت المحدد. على نحو فعال datapoints.0.time <= enddate | ثواني يونيكس |
com.maxspeed | 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 | وصف |
---|---|---|---|---|
بطاقة تعريف | خيط | غير متوفر | سيد | معرف العاصفة |
اسم | خيط | غير متوفر | اسم | الاسم المقدم من قبل الوكالة. هذه يمكن أن تتغير مع مرور الوقت. |
نشيط | منطقية | غير متوفر | غير متوفر | ما إذا كانت العاصفة نشطة حاليًا أم لا. |
maxSpeed | كثافة العمليات | عقدة | غير متوفر | السرعة القصوى التي وصلت إليها العاصفة في حياتها. |
firstActive | طويل | ثواني يونيكس | ISO_TIME | في المرة الأولى لوحظ أن هذه العاصفة نشطة. |
lastActive | طويل | ثواني يونيكس | ISO_TIME | آخر مرة لوحظت فيها هذه العاصفة كانت نشطة. |
نقاط البيانات | صفيف | غير متوفر | غير متوفر | مصفوفة تحتوي على بعض بيانات العاصفة في نقاط زمنية مختلفة |
ملكية | يكتب | وحدة | عمود IBTrACS | وصف |
---|---|---|---|---|
خطوط العرض | يطفو | درجة شمالا | لات | خط العرض في هذا الطابع الزمني. |
خط الطول | يطفو | درجات شرقا | خط الطول | خط الطول في هذا الطابع الزمني. |
وقت | طويل | ثواني يونيكس | ISO_TIME | الطابع الزمني لنظام UNIX لنقطة البيانات هذه. |
com.stormSpeed | كثافة العمليات | عقدة | STORM_SPEED | سرعة العاصفة في هذا الطابع الزمني. |
سرعة الرياح | كثافة العمليات | عقدة | USA_WIND | سرعة الرياح في هذا الطابع الزمني. |
قطة | كثافة العمليات | عقدة | STORM_SPEED | فئة مقياس سافير سيمبسون لهذه العاصفة في هذا الطابع الزمني. -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 | المسافة إلى الأرض من الموقع الحالي. تشمل جميع القارات والجزر التي يزيد حجمها عن 1400 كيلومتر^2. |
(العقدة الواحدة = 1.852 كم/ساعة | 1.151 ميل في الساعة)
للحصول على معلومات حول أعمدة IBTrACS، انقر هنا.