簡體   English   中英

在iPhone上使用SQLite數據庫進行空間請求

[英]Spatial request using SQLite database on iPhone

我想通過使用本地存儲的空間數據使用地理位置來開發iPhone應用程序。

這種應用程序的棘手部分是對請求“我希望我周圍有x個最近的點”的響應。 這是因為必須對數據進行排序,並且排序標准是球體上的距離(是的,地球不是平坦的^^)。 因此,高效的算法非常復雜。

空間數據存儲在我的應用程序本地(因此使用sqlLite),因此我不能使用MyGis或PostGis之類的庫。 在SqlLite上,我看到了“ SpatiaLite”,但似乎與iPhone配合使用不是很方便。

有誰知道圖書館可以輕松地做到這一點?...或執行此任務的便捷方法?

在SQL查詢中,您需要計算給定點與每個存儲點之間的距離,並根據該值對結果進行排序並返回前x行。

您無需說明有多少數據點或它們有多少分散-如果這是一個大數據集,則此方法將很昂貴,並且您將需要研究在計算之前確定點的可能子集的方法所有距離和/或一種緩存/預先計算技術,以防止您一遍又一遍地為同一位置的用戶計算相同的信息。 因為您實際上將在每個數據行上運行一個函數,所以不能使用索引。

關於如何計算兩點之間的距離,有很多很好的參考,例如:

http://www.mathopenref.com/coorddist.html

除非數據對精度特別敏感,否則地球的球形性質不會對距離產生太大影響,但如果是這樣,則其他因素(例如海拔高度變化)也會對實際距離產生影響。

暫無
暫無

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

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