簡體   English   中英

大量位置地理編碼的策略

[英]Strategies for large volume of location geocoding

我有一個使用Google Maps API來對緯度/經度之間的距離進行地理編碼的應用程序,以在您的手機上顯示您附近的人的方式(當前為Android,在iPhone上運行)。 問題是,即使有40個用戶的測試組,我們也要花費10秒鍾以上的時間來進行計算並將結果發送回用戶。 盡管10秒鍾聽起來很長,但就客戶端應用程序而言,這並不是一個真正的問題,因為它不是實時更新人員的位置(每隔幾分鍾進行一次更新)。 顯然,這是一個問題,因為我們顯然希望增加到成千上萬的用戶。 我很好奇,是否有人在此領域有使用Google Maps API計算大量數據點之間距離的經驗?

順便說一句,我們在服務器上使用Rails,這是進行所有位置計算的地方。 電話僅顯示地圖,並使用經/緯度坐標更新服務器。

如果您已經有了緯度/經度坐標,則不需要google maps API來計算距離。 可以使用Haversine或Vincenty公式來計算大圓距離

編輯:如果我正確理解了您的問題(在10,000條記錄中找到一個給定位置附近的位置),我只能建議為此目的使用一些地理圖書館。 當有更多請求進入時,計算10k距離是一個壞主意。您絕對應該為此考慮更智能的算法(四叉樹似乎很實用)。

看一下Geokit吧 ,它是一個Ruby Gem and Rails插件, 可以滿足您的需求,而且我想您也會對速度和功能感到非常滿意。

如果您要覆蓋某個特定區域,則在進行任何計算之前,可能需要考慮將經緯度長轉換為局部等距投影。 更簡單地說,如果覆蓋全球區域,則將經緯度轉換為兩個最近的UTM區域,存儲兩組XY坐標和兩個UTM區域ID。 然后,您可以先選擇UTM區域匹配上的記錄,然后再使用投影的坐標對該子集進行計算(這將比計算距經緯度的距離快得多)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM