如何在spatialite中获取它们之间的距离小于(某个距离)的所有点
How to get all the points that the distance between them is less than (some distance) in spatialite
我正在使用 "SpatiaLite",我有一个带有几何柱的 table。
此列是带有 POINTS 的 BLOB。
例如插入一个点我做:
"INSERT INTO exampletable(geom) VALUES(GeomFromText('POINT(-101.1 46.6)', 4326))"
我想得到这个table中的所有点,它们之间的距离小于某个距离(例如3000m)。
我在这 table 1800 行中有不同的点。
谢谢
您可以在查询中使用相同的 table 两次。空间索引在这里非常有用。
试试这个(很容易解释):
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)))
我正在使用 "SpatiaLite",我有一个带有几何柱的 table。 此列是带有 POINTS 的 BLOB。 例如插入一个点我做:
"INSERT INTO exampletable(geom) VALUES(GeomFromText('POINT(-101.1 46.6)', 4326))"
我想得到这个table中的所有点,它们之间的距离小于某个距离(例如3000m)。
我在这 table 1800 行中有不同的点。
谢谢
您可以在查询中使用相同的 table 两次。空间索引在这里非常有用。
试试这个(很容易解释):
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)))