2011-08-17 48 views
0

我正在工作的應用程序,需要找到特定產品的附近分銷商。截至目前,我有當前位置的經度和緯度。除此之外,我也有所有產品經銷商名單,各自的座標。我正在運行查詢,該查詢給了我最近的10個位置,但是爲了它徹底查看了DB中的每條記錄,計算出當前位置和特定位置之間的距離。它需要太多時間。還有其他的選擇嗎?需要尋找附近的位置幫助

回答

1

您是否可以通過創建最大和最小長度和緯度(例如距當前位置10英里內)來首先縮小數據集的範圍。然後,您可以通過lat> minLat查詢數據集,然後通過計算最小子集上的實際距離(如果您需要),然後按照您的建議對它們進行排序。

+0

看起來像德米特里也打敗了我吧。 –

0

您可以通過在您的位置周圍創建矩形緩衝區來篩選位置列表,以過濾附近的位置。

SELECT * FROM表t WHERE t.lat <(LAT + BUFF)AND t.long <(長+ BUFF)AND t.lat>(LAT-BUFF)AND t.long>(長的buff)

緯度,經度 - 您的位置,淺黃色 - 一定的價值,你可以調節,以滿足您的應用需求(如100 英尺,1英里等)

然後你就可以在返回的記錄運行的距離計算。

1

爲避免計算每個位置的距離,您可以使用最大左上角長度(上10英里和後10英里)和最大右下角長(10英寸)創建一個緯度長的方塊(可以說爲10英里)英里和10英里右)。然後,您的查詢將在該框中使用> =和< =找到經緯度,然後計算每個距離以濾除超過10英里的角落中的位置。

另一個選項是查看spatial indexing for SQLite

+0

Spatialite iOS http://stackoverflow.com/questions/4793970/how-to-compile-spatialite-for-ios – Joe