عن المشروع
Floodcast-Gurugram هو تطبيق ويب للتنبؤ بالفيضانات يعتمد على التكنولوجيا المدنية لمدينة Gurugram (Gurgaon) في الهند. يهدف التطبيق للإجابة على سؤال محدد لا تجيب عليه تطبيقات الطقس العادية أو قوائم المناطق المعرضة للفيضانات: بناءً على توقعات هطول الأمطار المباشرة، هل سيتعرض مسار معين للفيضانات في الساعات القليلة القادمة، ومتى يبدأ الفيضان بالضبط، ومتى ينحسر؟ وبدلاً من تقديم درجة مخاطر مجردة، يرفق التطبيق دائماً نافذة زمنية مع كل حكم.
ما يقوم به التطبيق
- مخاطر بنوافذ زمنية: تتم مقارنة هطول الأمطار الساعي المباشر مع كل نقطة من نقاط الفيضانات الـ 73 المسجلة لحساب وقت حدوث الفيضان ووقت انحساره، باستخدام نطاقات تحذيرية على نمط IMD بالإضافة إلى أوقات بدء وانحسار صريحة.
- أحكام المسارات: يتم تحديد اسمي مكانين والبحث عن النقاط الساخنة ضمن نطاق 1.5 كم من الخط المستقيم بينهما؛ ويقوم التطبيق بالإبلاغ عن أسوأ نقطة وأسوأ نافذة زمنية.
- جدول زمني ساعي: يمكن للمستخدمين التمرير للأمام عبر التوقعات ومراقبة الخريطة والحكم والسجل عند تلك الساعة.
- محاكي هطول الأمطار: نظراً لأن Gurugram تكون جافة معظم العام، يمكن للمستخدمين الاستفسار عما يحدث عند 20 أو 35 أو 55 ملم/ساعة ومراقبة استجابة السجل عبر نفس المحرك المستخدم في الحكم المباشر.
- تقارير المواطنين: تشمل صورة كاميرا، وتحديد موقع GPS مع دقته، والعمق الملحوظ. يتم تخزين التقارير على الجهاز أولاً، وتخضع للإشراف قبل العرض العام.
- مؤشر CPCB National AQI: مقياس هندي من 0 إلى 500 يتم حسابه من متوسط الملوثات على مدار 24 ساعة، بدلاً من مؤشر الموردين من 1 إلى 5.
يتم التعامل مع مصدر البيانات كميزة من ميزات المنتج. من بين 73 نقطة مسجلة، هناك 39 نقطة موثقة: 4 منها وردت في قائمة النقاط الساخنة للمنطقة 1 التابعة لـ MCG، و26 تكررت في تقريرين إخباريين مستقلين أو أكثر من عام 2022 إلى 2025، و9 من مصادر مؤسسية مؤرخة ومسجلة لموسم الرياح الموسمية الحالي. أما الـ 24 المتبقية فوصفها بأنها إدخالات محتملة في قائمة المراقبة ولكنها غير مؤكدة، و10 منها عبارة عن عناصر نائبة أعيد بناؤها فقط للحفاظ على عدد النقاط الرسمي لـ MCG وهو 36 نقطة. يذكر ملف README بوضوح أن توسيع السجل أدى إلى تخفيف متوسط الثقة مقارنة بالـ 36 الأصلية، وأن علامة تبويب "What's real" في التطبيق تكشف عن هذه المستويات، مع ترميز تعبئة العلامات على الخريطة لبيان درجة اليقين. جميع الصفوف الـ 73 مصنفة على أنها ذات إحداثيات غير مؤكدة؛ حيث يقوم سكربت بمراجعتها مقابل OpenStreetMap ويكتب تقريراً ولكن لا يعدل البيانات أبداً. كما أن مطابقة المسارات هي صراحةً مطابقة ممر بخط مستقيم وليست توجيهاً تفصيلياً للمنعطفات، ويتم الإفصاح عن ذلك في كل إجابة متعلقة بالمسار.
حلقة التعلم
تُعامل الأماكن المبلغ عنها والتي تقع ضمن 500 متر من بعضها البعض كمكان واحد. يتم ترقية المكان إلى نقطة فيضانات قائمة بذاتها بعد 3 تقارير عبر يومين منفصلين، وتُسحب بشكل منفصل ولا يتم دمجها أبداً في الصفوف الـ 73 التي تم البحث عنها. لا يتم نشر العتبة المقاسة لنقطة ما إلا بعد يومين منفصلين يكون فيها العمق بمستوى الركبة أو أسوأ مع هطول أمطار تزيد عن 1 ملم/ساعة؛ والرقم المنشور هو أخف مطر شوهد فعلياً وهو يسبب فيضاناً في ذلك المكان. يوفر Open-Meteo كمية الأمطار التي سقطت قبل كل تقرير معتمد. لا يمكن كتابة أعداد التقارير وأزواج المعايرة والعتبات الملحوظة إلا من خلال مشغلات قاعدة البيانات (database triggers)، والتي تفرضها منح الأعمدة، بحيث لا يمكن للمشرف كتابة قياس يدوياً.
البنية والتقنيات المستخدمة
التطبيق عبارة عن موقع ثابت: React 19 مع TypeScript، تم بناؤه باستخدام Vite (rolldown) وتم تصييره باستخدام Leaflet، ويتم شحنه كـ PWA قابل للتثبيت ويعمل أولاً بدون اتصال بالإنترنت (offline-first) ويتم نشره على استضافة ثابتة. سجل النقاط الساخنة (62 كيلوبايت من الصفوف الثابتة) مدمج في الحزمة، لذا يتم تصيير الخريطة والقائمة قبل أي طلب شبكة. عملية التقييم هي حسابات بحتة على تلك الصفوف وتعمل على الجهاز. النداء الوحيد الدائم هو Open-Meteo، الذي لا يتطلب مفتاح API ويسمح بالوصول عبر النطاقات المختلفة، لذا يتم استدعاؤه من عنوان IP الزائر؛ ويُستخدم Nominatim فقط كبديل للأماكن غير الموجودة في السجل. Supabase اختياري: بدونه تظل أداة التوقعات تعمل بالكامل وتبقى التقارير على الجهاز. يوثق ملف README نسخة سابقة كانت تعتمد على FastAPI-on-a-container والتي استغرق تشغيلها البارد 42.7 ثانية وكانت نداءات التوقعات فيها محدودة المعدل بشكل دائم، مما دفع إلى إعادة التصميم لتكون بالكامل على جانب العميل؛ ويُذكر أن إجمالي الحزمة يبلغ حوالي 160 كيلوبايت مضغوطة (gzipped).
مسار البيانات
لا يوجد نموذج مدرب. تقوم أربعة مولدات Python حتمية ببذور ثابتة ببناء السجل على مراحل (36 صفاً مجمدة وفقاً لهيكل MCG، ثم من 36 إلى 64، ثم من 64 إلى 73)، تليها خطوة تصدير تنتج ملف JSON الذي يشحنه التطبيق وفحص للسلامة. يقوم التكامل المستمر (CI) بإعادة توليد جميع المراحل عند كل عملية دفع (push) ويفشل إذا اختلف المخرج عما تم تثبيته؛ ويُوجه المساهمون إلى تعديل المولدات وليس ملفات CSV. تم جلب شبكة الصرف المنشورة من GMDA (4,701 قطعة مجرى مائية مرسومة، 10 أحواض تصريف) لمناطق تجميع المياه، ولكن تم استبعاد هذه البيانات عمداً من أي درجة مخاطر، وهناك اختبار يفرض ذلك. ومن الجدير بالذكر أن ملف README يذكر أن متوسط حجم حوض التجميع لا يرتبط بمستويات الشدة، وهذه النتيجة السلبية منشورة. لا يتم ادعاء أي رقم دقة إجمالي، لعدم وجود سجل فيضانات مرجعي (ground-truth)؛ وبدلاً من ذلك، يذكر ملف README منحنى استجابة (10 ملم/ساعة لا تسبب فيضانات، 20 ملم/ساعة تضرب أسوأ 10 تقاطعات، 35 ملم/ساعة تصل إلى 44 من أصل 73 نقطة، و55 ملم/ساعة مستمرة تغطي السجل بالكامل) ومعدل توثيق بنسبة 53 بالمائة.
تنبيهات للمستخدمين المحتملين
جميع الإحداثيات هي مواضع تقريبية وليست مواقع محددة بدقة (geocoded)؛ بدأت العتبات كتقديرات هندسية حسب مستوى الشدة وليس كقياسات، ويتم استبدالها فقط مع تراكم أدلة المواطنين؛ يستخدم تحليل المسار ممراً بخط مستقيم بدلاً من الطرق الحقيقية؛ والسجل، رغم توثيق جزء منه، ليس مجموعة بيانات حكومية رسمية. يرافق المشروع عرض توضيحي مباشر، ورخصة MIT، وتوثيق مخصص لمصادر البيانات.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.