我有这个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查询?
答案 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
);