如何查询比我请求的更大的矩形中的几何图形?
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
);
我有这个 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
);