SQL统一分配点

Jav*_*ier 5 sql database

我有一张带有地理定位点的长桌:

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似乎不是一个明显的任务(至少对我来说).

谢谢,哈维尔

dec*_*den 0

我建议你在软件中进行过滤。我认为您无法用 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)