获取下一个N最近的地理点

Tim*_*ima 5 sqlite math android

我在我的android应用程序中有一个带有地理指针的数据库表(lat和lon是十进制度值),大约1000点.我需要选择20个最近点到某个给定的地理点.

我在Stackoverflow上找到了如何计算两个地理点之间距离的答案,并且非常高兴,直到我尝试编写查询.我发现,在内置的android的sqlite中使用trignometrical函数是不可能的.

但后来我有了一个想法.我真的不需要计算距离.接近一个点是另一个点,它们的地理坐标应该是较小的差异.

我怎么能用这个事实?通过(lat_0 - lat_n)^ 2 +(lon0-lon_n)^ 2订购保存点是否足够,其中lat_0和lon_0是给定点的地理坐标?

谢谢,

穆尔

UPD

因此,获得我的问题答案的最佳方法是测试我上面描述的方法.

它工作得很好,但与精确距离相比并不完全正确.

因此,如果您只需要计算距离,这个解决方案就可以,但在我的情况下,我还需要按距离订购工作站,并且无法使用此解决方案.

我要感谢John在CashCommons和Philip.感谢你们

Joh*_*ohn 2

如果您的点在一个城市内(或多或少)是分开的,那么该近似值就可以很好地工作。不过,如果你环游世界,这个近似值就会崩溃。

编辑: 根据下面菲利普的评论,您应该缩放其中一个组件。德国位于北纬约 50 度,因此将经度乘以 (cos 50 度) 效果会更好。

  • 注意,经纬度 1 英里!= 经度 1 英里,赤道除外 (2认同)