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

How do I query for geometries in a rectangle bigger than what I request?

我有这个 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);

这个 returns 由这四个点组成的矩形中的几何图形,但我想取回比这大一公里的矩形中的几何图形。我必须编写什么 PostGIS 查询?

只需在地理类型上使用 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
);