如何在比我要求的更大的矩形中查询几何图形?

时间:2018-01-08 22:26:34

标签: postgis intersection bounding-box

我有这个PostGIS查询:

SELECT ST_AsGeoJSON(geom) AS geom_geojson 
FROM tracts AS tbl 
WHERE ST_MakeEnvelope(-86.84422306060793,36.14537465258748,-86.76182559967043,36.17846331773539) && ST_Transform(tbl.geom,4326);

这会返回由这四个点构成的矩形中的几何图形,但我希望在一个比这大一公里的矩形内找回几何图形。我必须写什么PostGIS查询?

1 个答案:

答案 0 :(得分:1)

只需在地理位置类型上使用ST_DWithin即可。如果您在tbl.geom::geography上有索引,则会使用它。或者,您可以将tbl.geom存储为地理位置,然后您只需要在列上添加索引。

SELECT ST_AsGeoJSON(geom) AS geom_geojson 
FROM tracts AS tbl 
WHERE ST_DWithin(
  tbl.geom::geography,
  ST_MakeEnvelope(
    -86.84422306060793,
    36.14537465258748,
    -86.76182559967043,
    36.17846331773539
  ),
  1000
);