繁体   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