FloodWatch Live — แดชบอร์ดติดตามน้ำท่วมและภัยพิบัติเรียลไทม์
แพลตฟอร์ม Civic Tech แดชบอร์ดแผนที่ติดตามสถานการณ์น้ำท่วมและระดับน้ำตามเซนเซอร์โทรมาตรแบบเรียลไทม์ ใช้ข้อมูลจริง Zero-mock และเทคโนโลยี Vector Map ประสิทธิภาพสูง
1. Overview
FloodWatch Live คือแพลตฟอร์ม Civic Tech ด้านการเฝ้าระวังและเตือนภัยพิบัติน้ำท่วมแบบเรียลไทม์ ออกแบบขึ้นเพื่อเป็นศูนย์กลางข้อมูลสำหรับประชาชน อาสาสมัครกู้ภัย และชุมชนท้องถิ่น ในการติดตามสถานการณ์ระดับน้ำในลำน้ำ ปริมาณฝนสะสม และแนวโน้มความเสี่ยงอุทกภัยได้อย่างแม่นยำและทันท่วงที
ระบบมุ่งเน้นการตรวจวัดในพื้นที่จุดเสี่ยงภัยสำคัญระดับประเทศ ได้แก่ ประจวบคีรีขันธ์ (ลุ่มน้ำบางสะพาน) และ สงขลา (ลุ่มน้ำหาดใหญ่) โดยดำเนินนโยบาย Zero-mock Civic Data ดึงข้อมูลโดยตรงจากเครือข่ายเซนเซอร์โทรมาตรของหน่วยงานภาครัฐจริง นำมารวมและเรนเดอร์ลงบนแผนที่เวกเตอร์เชิงโต้ตอบความเร็วสูง (High-performance Vector Tiles) ด้วย MapLibre GL JS และ OpenFreeMap
2. Stories & Visual Tour
Real-time Disaster Telemetry Map
หน้าหลัก FloodWatch Live แสดงแผนที่เวกเตอร์เชิงโต้ตอบ หมุดสถานีโทรมาตรวัดระดับน้ำ จุดเสี่ยงน้ำท่วม และแผงควบคุมระดับน้ำแบบเรียลไทม์
3. Architecture & Workflows
System Architecture (Infographic)
flowchart TB subgraph Client["Client Tier (MapLibre GL JS & React)"] UI_MAP["Interactive Vector Map\n(OpenFreeMap Style / WebGL Layer)"] UI_HUD["Telemetry HUD & Metrics Panel\n(Water Height, Discharge Rate, Status)"] UI_GEO["GeoJSON Spatial Layer\n(Thai River Basins & Critical Zones)"] end
subgraph Edge["Edge Ingestion & Caching (Vercel Edge sin1)"] INGEST["Telemetry Poller & Normalizer\n(Zero-mock External Ingestion)"] CACHE["Edge SWR Cache (60s TTL)\n(Protects Upstream Origin Limits)"] SPATIAL["Bounding-Box Spatial Filter\n(Dynamic Point Clustering)"] end
subgraph Upstream["Civic Telemetry & Tile Infrastructure"] SENSORS_BS["Bang Saphan Hydrological Stations\n(Prachuap Khiri Khan Telemetry)"] SENSORS_HY["Hat Yai Drainage Sensor Network\n(Songkhla Basin Telemetry)"] TILE_SERVER["OpenFreeMap Global Vector Tiles\n(Zero-cost, Zero-rate-limit Base Map)"] end
Upstream --> INGEST TILE_SERVER --> UI_MAP INGEST --> CACHE CACHE --> SPATIAL SPATIAL --> ClientTelemetry Ingestion & Caching Sequence
sequenceDiagram autonumber actor User as ผู้ใช้งาน / ชุมชน participant Browser as FloodWatch Client (MapLibre) participant Edge as Vercel Edge API (sin1) participant Cache as Edge Cache (SWR 60s) participant Station as เซนเซอร์โทรมาตร (Gov Telemetry)
Note over User, Station: 1. เคลื่อนย้ายมุมมองแผนที่ (Pan / Zoom Viewport) User->>Browser: เลื่อนดูพื้นที่ (เช่น บางสะพาน หรือ หาดใหญ่) Browser->>Edge: Request ข้อมูลสถานีตาม Bounding Box (BBox) Edge->>Cache: ตรวจสอบข้อมูลใน Edge SWR Cache
alt Cache Hit (ข้อมูลยังสดใหม่ < 60 วินาที) Cache-->>Browser: ส่ง Telemetry GeoJSON กลับทันที (< 30ms) else Cache Miss หรือ Stale Edge->>Station: ดึงข้อมูลระดับน้ำและปริมาณฝนจริง (Zero-mock) Station-->>Edge: ตอบกลับ Raw Telemetry Payload Edge->>Edge: ทำ Data Normalization และประเมิน Warning Level Edge->>Cache: อัปเดตข้อมูลลง Edge SWR Cache Edge-->>Browser: ส่ง GeoJSON FeatureCollection กลับไปยัง Client end
Note over Browser, User: 2. เรนเดอร์บน WebGL Vector Layer Browser->>Browser: คลัสเตอร์และเรนเดอร์หมุดสถานีตามระดับการเตือนภัย Browser-->>User: แสดงหมุดสีเตือนภัย พร้อมกราฟแนวโน้มระดับน้ำและค่าสถิติ4. Key Engineering Highlights
- Zero-Mock Civic Data Policy: ยึดมั่นในการใช้ข้อมูลจริง 100% จากสถานีโทรมาตรตรวจวัดทางอุทกวิทยาของหน่วยงานภาครัฐในพื้นที่ประจวบคีรีขันธ์ (บางสะพาน) และสงขลา (หาดใหญ่) ไม่ใช้ข้อมูล Mock จำลอง เพื่อให้ข้อมูลมีความน่าเชื่อถือสูงสุดในการเตือนภัย
- OpenFreeMap & Ultra-fast Vector Tiles: เลือกใช้ OpenFreeMap ร่วมกับ MapLibre GL JS แทนการพึ่งพาบริการแผนที่เชิงพาณิชย์ที่มีลิมิตและค่าใช้จ่ายสูง ทำให้ระบบสามารถรองรับผู้ใช้งานจำนวนมากได้โดยไม่มีค่าบริการแฝง และเรนเดอร์ Vector Tiles ด้วย WebGL ที่เฟรมเรต 60 FPS อย่างลื่นไหล
- Edge-powered SWR Telemetry Ingestion: พัฒนาระบบ Ingestion บน Vercel Edge (sin1) พร้อมกลไก Stale-While-Revalidate (SWR) ป้องกันปัญหา Server ของหน่วยงานต้นทางล่มจากปริมาณ Request มหาศาลระหว่างเกิดภัยพิบัติ
- Optimized Thai GeoJSON & Spatial Clustering: ออกแบบโครงสร้าง Thai GeoJSON ของลุ่มน้ำและสถานีตรวจวัด พร้อมคำนวณ Spatial Bounding Box คัดกรองข้อมูลเฉพาะพื้นที่ที่ปรากฏบนหน้าจอ ช่วยลดขนาด Network Payload ได้มากกว่า 80%
- Rigorous Test Validation: ตรวจสอบความถูกต้องของโมดูลคำนวณสถานะเตือนภัย (Normal, Warning, Critical) และการแปลงพิกัดภูมิศาสตร์ผ่านชุดทดสอบ Vitest อัตโนมัติ
5. My Role & What I Built
ในฐานะ Full-stack & Geospatial Developer ผมรับผิดชอบการออกแบบและพัฒนาระบบทั้งหมด:
- Map & UI Engineering: พัฒนา Interactive Map บน Next.js, React และ MapLibre GL JS ออกแบบ Custom Map Style, Vector Layer และแผง Telemetry HUD
- Edge Backend & Data Normalizer: พัฒนา Data Pipeline บน Vercel Edge สำหรับรวบรวมข้อมูลโทรมาตร แปลงข้อมูลดิบจากหน่วยงานรัฐให้อยู่ในรูปแบบ GeoJSON มาตรฐาน และตั้งค่า Cache-Control Headers
- Geospatial Optimization: ออกแบบระบบ Bounding-Box Filtering และ Point Clustering เพื่อการแสดงผลจุดวัดระดับน้ำอย่างมีประสิทธิภาพสูงสุด
- Reliability Testing: พัฒนาชุดทดสอบ Vitest เพื่อการันตีความถูกต้องของตรรกะการวิเคราะห์ระดับน้ำและการจัดการข้อมูลพิกัด
6. Result & Current State
- Civic Tech Impact: สร้างเครื่องมือติดตามภัยพิบัติที่มีประสิทธิภาพสูง เปิดกว้าง และเข้าถึงง่ายสำหรับประชาชนในพื้นที่เสี่ยงภัย
- High Availability: ระบบทำงานแบบ Zero-downtime โดยสถาปัตยกรรม Edge Caching ช่วยปกป้อง API ต้นทางและตอบสนองข้อมูลได้รวดเร็วภายในเวลาไม่กี่มิลลิวินาที
7. Demo & Code
- Production Live (เข้าใช้งานได้จริง): flood-watch-live.vercel.app
- GitHub (Private Repository): Manchinn/flood-watch-live
- Architecture: Next.js + MapLibre GL JS + OpenFreeMap + Vercel Edge (sin1) + Telemetry APIs
- Deployment Target: Vercel Edge Network