我有一个表格,其中有一堆多边形(或多边形,我不确定......这有关系吗?)一种类型(A)在CTE中定义,然后另一种类型(B)在另一个CTE。我想过滤A类型的多边形,这些多边形位于给定半径任何类型B的多边形内。我该怎么做?
答案 0 :(得分:2)
创建一个' B'多边形使用 ST_Collect &然后使用带有 ST_DWithin 的WHERE子句来指定距离参数。
例如:
WITH polys_a AS (
SELECT geom
FROM buildings_dc
),
polys_b AS (
SELECT geom
FROM buildings_va
)
SELECT polys_a.*
FROM polys_a,
(
SELECT ST_Collect(geom) as geoms
FROM polys_b
) as c
WHERE ST_DWithin(a.geom, c.geoms, .001);
请注意,两组几何图形可能不同(例如,多边形,点,多边形等),但它们必须具有相同的投影/坐标系。如果您使用的是标准WGS84(SRID 4326),则距离参数以度为单位。