我在我的 Android 应用程序中有一个包含地理点的数据库表(纬度和经度是十进制度值),大约 1000 点。我需要选择距离某个给定地理点最近的 20 个点。
我在 Stackoverflow 找到了如何计算两个地理点之间的距离的答案,并且非常高兴,直到我尝试编写我的查询。我发现,在 android 的内置 sqlite 中使用三角函数是不可能的。
但后来我有一个想法。我真的不需要计算距离。一个点距离另一个点越近,它们的地理坐标差异就应该越小。
我该如何利用这个事实呢?按 (lat_0 - lat_n)^2 + (lon0-lon_n)^2 对保存的点进行排序是否足够,其中 lat_0 和 lon_0 是给定点的地理坐标?
谢谢你,
Mur
UPD
因此,获得问题答案的最佳方法是测试我上面描述的方法。
它工作得很好,但与精确距离相比并不完全准确。
因此,如果您只需要计算距离,这个解决方案是可以的,但就我而言,我还需要按距离排序车站,并且无法使用这个解决方案。
我要感谢 CashCommons 的约翰和菲利普。感谢你们
如果您的点在一个城市内(或多或少)是分开的,那么该近似值就可以很好地工作。不过,如果你环游世界,这个近似值就会崩溃。
EDIT:根据下面 Philip 的评论,您应该扩展其中一个组件。德国位于北纬约 50 度,因此将经度乘以 (cos 50 度) 效果会更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)