2013-05-12 52 views
1

我有大約100個地理圍欄(多邊形)定義並存儲在數據庫中。我的跟蹤設備每分鐘更新一次它的位置。檢查給定LatLng的最佳方法是在任何這些geofences中進行檢查?我想在這些地理圍欄中的任何設備上觸發警報。在Google地圖中處理多個地理柵欄

我能想到的是,在從跟蹤設備接收到位置後的每一分鐘內,我都必須從數據庫或數組中查詢地理柵欄信息,並且一次比較一次。但這似乎在計算上很昂貴。

任何想法和幫助,請..

+0

檢查此鏈接:http://stackoverflow.com/questions/6522484/google-maps-v3-check-if-point-exists-in-polygon – chrki 2013-05-12 17:26:55

+0

感謝您的鏈接。我可以檢查點是否在選定的多邊形。但這裏的問題是我有幾個多邊形,我不知道我要檢查哪個多邊形。因此,所有要檢查的多邊形都會減慢javascript。我正在尋找一種有效的方法來做到這一點。 – asiph 2013-05-20 10:35:23

回答

1

假設存儲地理圍欄是相對靜態的(即不修改/添加/刪除頻繁),你可以通過選擇進行交易的存儲空間點的查找時間用合適的空間數據結構代表您的地理圍欄。

例如,可以使用R樹(https://en.wikipedia.org/wiki/R-tree)來存儲哪些地理圍欄可能適用於給定的點位置,以便只需檢查這些圍欄的子集以確定點是否位於其中。

務實,你很可能最好關閉使用已經存在的如PostgreSQL + PostGIS的空間功能的數據庫(http://postgis.net/),它允許您根據空間關係的有效發佈查詢(在你的應用程序可能ST_Within或ST_Contains)