整體架構
[基站/設備] → [網關/協議解析] → [消息隊列 Kafka] → [流處理 Flink/Spark Streaming] → [時序數據庫 InfluxDB / PostgreSQL+TimescaleDB]
↓
[Web 前端 Leaflet/OpenLayers/Mapbox GL] ← [API 服務 Spring Boot/Node.js] ← [數據服務]
關鍵模塊
- 數據接入:MQTT/HTTP/TCP 接入,協議解析(Protobuf/JSON),寫入 Kafka 主題
raw_location。
- 清洗入庫:流任務解析
device_id, lat, lng, timestamp, signal,去噪(Kalman/簡單半徑過濾),寫入時序表 device_track(分區按 device_id + 天)。
- 軌跡生成:定時任務或流式聚合,按
device_id、時間窗口排序點序列,生成 LineString 存入 PostGIS 或輸出 GeoJSON。
- 地圖展示:前端用 Leaflet + Canvas/Vector Tile 渲染大量軌跡,支持時間軸播放、熱力圖、聚合點。
- 分析功能:停留點檢測(DBSCAN)、路徑相似度、越界報警、里程統計。
技術選型建議
| 層級 | 推薦 | 備選 |
| 時序存儲 | TimescaleDB (PG擴展) | InfluxDB, TDengine |
| 空間查詢 | PostGIS | MongoDB 2dsphere |
| 地圖渲染 | Mapbox GL JS / Deck.gl | Leaflet + Canvas, OpenLayers |
| 流處理 | Flink SQL | Spark Structured Streaming |
起步建議
- 先跑通「單設備軌跡點 → 數據庫 → API → 地圖顯示」最小閉環。
- 使用 Docker Compose 快速搭建 PG+PostGIS+Kafka+Flink 開發環境。
- 前端直接調用公共瓦片(OpenStreetMap/高德/天地圖)降低地圖服務搭建成本。