Database-Design

Geo Route - 儲存路由路徑的最佳方式/db

  • September 2, 2020

我們正在開發一個應用程序,該 UI 需要顯示卡車司機駕駛卡車的路徑。司機手機將連續發送(例如每 10 秒一次)他們的實時位置。

哪個數據庫更適合儲存位置路徑(折線)。我們的團隊有 Mongo (with Geodata), Redis, MySQL 的經驗

有沒有最好的數據庫來儲存這種地理數據?

很大程度上取決於“儲存路由路徑”的含義

**(a)你的意思是儲存卡車經過的路段的地理形狀嗎?**假設您進行了某種形式的地圖匹配,即將卡車發送的 GPS 位置與您的道路數據庫相關聯。

(b)你的意思是用你從每輛卡車上收到的 GPS 點建構一個軌道嗎?

(c)您的意思是將 GPS 座標儲存在表格中嗎?

您可以使用任何數據庫來儲存地理資訊,無論是單個點還是複雜的形狀……對於點,您只需要幾個 X 和 Y 數字列。對於線條,您可以使用任何可用的標准文本表示:OGC WKT、GML、GeoJson,甚至 KML。由於潛在的大小和復雜性(本質上是頂點的數量),它們通常儲存在 CLOB 結構中。

真正的問題是關於你為建構這些地理形狀所做的處理。點(案例c)是微不足道的。從點建構一條線作為 GPS 軌跡(案例 b)更費力:建構一個 GeoJSON 表示很容易:它只是意味著向 JSON 字元串添加一個新點。需要工作的是計算出錯誤的位置——離軌道太遠了,除了錯誤之外什麼都不是。

進行地圖匹配(案例 a)需要更多的工作,因為它需要為每個 GPS 位置定位正確的路段 - 考​​慮座標的近似值和先前路段的歷史。當然,您需要一個完整的數據庫,其中包含您的應用程序覆蓋的地理區域內的所有路段。這需要一個相當先進的數據庫,該數據庫具有適當的空間類型以及索引和空間謂詞。很少有數據庫具有此功能:Oracle 將其作為本機功能。PostgreSQL 通過 PostGIS 擴展擁有它。

然後是關於應用程序的全部內容的問題:是否只是在地圖上為每輛卡車顯示路線?您需要重播路線嗎?查看前一天的路線?是否進行路線偏差檢查(將路線與計劃路線匹配並發送警報)?預測到達時間?將卡車的速度與計劃的路線進行比較(是否提前?是否延遲)。所有這些再次需要具有高級空間處理能力的數據庫。除非您在某個外部引擎中進行所有這些處理並且只使用數據庫來儲存結果……

如果我沒記錯的話,那正是Kinetica最初的商業實施案例。MapD/OmniSci 還強調將位置處理作為一個案例。兩者都可以在各自的雲產品中作為服務提供,或者在所需硬體可用時在內部提供。

引用自:https://dba.stackexchange.com/questions/274755