PostGIS:简单查询选择多边形节点

PostGIS: Simple query selecting nodes of polygon

我知道这很简单,但无论如何:(也在 gis.stackexchange 询问)

输入:

  1. 普通 OSM 建筑 .shp table
  2. PostGIS 点位置
  3. 半径(位置上方附近),假设为 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);