如何获得它们之间的距离小于(一定距离)的所有点

时间:2015-06-18 07:48:30

标签: sqlite spatialite

我正在和#34; SpatiaLite"我有一个几何列的表。 此列是带有POINTS的BLOB。 例如,插入一个点我做:

"INSERT INTO exampletable(geom) VALUES(GeomFromText('POINT(-101.1 46.6)', 4326))"

我想得到这张表中的所有点,它们之间的距离小于某个距离(例如3000米)。

我在这张表1800行中有不同的点。

Thx

1 个答案:

答案 0 :(得分:1)

您可以在查询中使用同一个表两次。空间索引在这里非常有用。

试试这个(这是非常自我解释):

SELECT a.* FROM point_table AS a, point_table AS b WHERE
    distance(a.geometry, b.geometry) < 3000 AND a.ROWID != b.ROWID AND
    b.ROWID IN (SELECT ROWID FROM SpatialIndex WHERE
    (f_table_name = "point_table" AND search_frame = Buffer(a.geometry, 3000)))