1

我想通过使用本地存储的空间数据来开发一个使用地理定位的 iPhone 应用程序。

这种应用程序的棘手部分是对“我想要我周围的 x 个最近点”请求的响应。这是因为必须对数据进行排序,排序标准是球体上的距离(是的,地球不是平的^^)。所以一个有效的算法是相当复杂的。

空间数据本地存储在我的应用程序中(因此使用 sqlLite),因此我不能使用诸如 MyGis 或 PostGis 之类的库。在 SqlLite 上我看到了“SpatiaLite”,但似乎与 iPhone 一起使用不是很方便。

任何人都知道一个图书馆可以轻松地做到这一点?......或者执行此任务的便捷方式?

4

1 回答 1

1

在您的 SQL 查询中,您需要计算给定点和每个存储点之间的距离,按该值对结果进行排序并返回前 x 行。

您没有说明有多少数据点,或者它们有多分散 - 如果这是一个大型数据集,那么这种方法将很昂贵,您将希望在计算之前查看如何识别可能的点子集的方法所有距离,和/或缓存/预计算技术,以防止您一遍又一遍地为同一个地方的用户计算相同的信息。因为您实际上将在每个数据行上运行一个函数,所以不能使用索引。

关于如何计算两点之间的距离有很多很好的参考资料,例如:

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

除非数据对精度特别敏感,否则地球的球形性质不会对距离产生太大影响,但如果是这样,还有其他因素(例如高度变化)也会对实际距离产生影响。

于 2011-01-05T10:21:08.073 回答