PostGIS:查找距离其他点一定半径范围内的点

6
我在PostgreSQL/PostGIS中有一张名为trip的表格,其中包含两个几何列:source_geom (POINT)和destination_geom (POINT),表示旅程的起点和终点。
我还有一个名为business的单独表格,其中包含一个几何列office_geom (POINT),该列表示办公室的位置。
我的目标是从表格trip中选择记录,其目的地距离任何一个办公室位置不超过1000米。
我需要发出什么查询以获得所需的结果?
1个回答

4

可以使用子查询或连接来完成。以下是使用子查询的示例:

SELECT * FROM business 
WHERE EXISTS(
    SELECT 1 FROM trip
    WHERE ST_Distance_Sphere(trip.destination_geom, business.office_geom) < 1000
)

但是这个查询不会使用索引,对于大数据集可能需要很长时间。如果您需要这样做,可以从geometry创建geography列,在geography列上创建空间索引,并使用ST_DWithin

select * 
  from business b
  join trip t on ST_DWithin(trip.destination_geogr, business.office_geogr, 1000)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接