PostGIS:简单查询选择多边形节点
PostGIS: Simple query selecting nodes of polygon
我知道这很简单,但无论如何:(也在 gis.stackexchange 询问)
输入:
- 普通 OSM 建筑 .shp table
- PostGIS 点位置
- 半径(位置上方附近),假设为 500 米。
结果:
我想从位置返回此半径内所有建筑物的所有角落,即("WHERE")它们与位置的距离小于 DISTANCE(假设为 200 米)。
我正在努力获得结果,因为点接受来自多边形的 WHERE 子句 table。
谢谢,
还有,你只需要半径范围内的顶点,不需要多边形的属性?如果是,您可以使用子查询来完成,该子查询首先提取所有顶点,然后使用 ST_DWithin:
查询子查询的结果
WITH vertices AS (SELECT (ST_DumpPoints(geom)).geom FROM buildings)
SELECT geom from vertices
WHERE ST_DWithin(geom, ST_GeomFromText('POINT(5 45)',4326), 100);
为了获得更好的性能,您还可以在子查询中添加相同的 WHERE 条件:
WITH vertices AS (SELECT (ST_DumpPoints(geom)).geom FROM buildings
WHERE ST_DWithin(geom, ST_GeomFromText('POINT(5 45)',4326), 100)
)
SELECT geom from vertices
WHERE ST_DWithin(geom, ST_GeomFromText('POINT(5 45)',4326), 100);
我知道这很简单,但无论如何:(也在 gis.stackexchange 询问)
输入:
- 普通 OSM 建筑 .shp table
- PostGIS 点位置
- 半径(位置上方附近),假设为 500 米。
结果:
我想从位置返回此半径内所有建筑物的所有角落,即("WHERE")它们与位置的距离小于 DISTANCE(假设为 200 米)。
我正在努力获得结果,因为点接受来自多边形的 WHERE 子句 table。
谢谢,
还有,你只需要半径范围内的顶点,不需要多边形的属性?如果是,您可以使用子查询来完成,该子查询首先提取所有顶点,然后使用 ST_DWithin:
查询子查询的结果WITH vertices AS (SELECT (ST_DumpPoints(geom)).geom FROM buildings)
SELECT geom from vertices
WHERE ST_DWithin(geom, ST_GeomFromText('POINT(5 45)',4326), 100);
为了获得更好的性能,您还可以在子查询中添加相同的 WHERE 条件:
WITH vertices AS (SELECT (ST_DumpPoints(geom)).geom FROM buildings
WHERE ST_DWithin(geom, ST_GeomFromText('POINT(5 45)',4326), 100)
)
SELECT geom from vertices
WHERE ST_DWithin(geom, ST_GeomFromText('POINT(5 45)',4326), 100);