我有一张带有地理定位点的长桌:
id lat lon
-----------------------
1 39.4600 110.3523410
2 39.4601 110.3523410
3 39.4605 110.3523410
4 39.4609 110.3523410
Run Code Online (Sandbox Code Playgroud)
当在地图上显示时,其中许多点将重叠,因为它们非常接近.怎样才能得到均匀分布点?也就是说,它们之间的距离大于给定点的一组点.
例如,点1和点2之间的距离(纬度)是0.0001.我可以得到一个只包含超过0.0003(或任何其他数量)的点的表结果吗?
使用地理空间数据库可能很容易,但使用普通的SQL似乎不是一个明显的任务(至少对我来说).
谢谢,哈维尔
我建议你在软件中进行过滤。我认为您无法用 SQL 表达该查询,因为结果不确定(您可以选择 39.4600 或 39.4601)。在软件中,您可以使用 kd 树来加速计算,因为简单的方法:
foreach point1 in points
foreach point2 in points
dist = (point1 - point2).length()
if dist < epsilon: remove point2 from list
Run Code Online (Sandbox Code Playgroud)
复杂度:O(n^2)