6

我在 PostgreSQL/PostGIS 中有一个trip以两个几何列命名的表:(source_geomPOINTdestination_geomPOINT)表示旅程的开始和结束位置。

我还有一个单独的表格,以business几何列office_geom( POINT) 命名,指示办公室的位置。

我的目标是从表中选择trip目的地在距离任何办公地点1000 米以内的记录。

我需要触发什么查询才能获得所需的结果?

4

1 回答 1

3

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

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

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

select * 
  from business b
  join trip t on ST_DWithin(trip.destination_geogr, business.office_geogr, 1000)
于 2012-10-10T15:30:20.980 回答