2016-07-29 103 views
0

我有一個表格,其中包含一組多邊形(或多邊形,我不確定...是否重要?)的一種類型(A) CTE,然後在另一個CTE中使用另一種類型(B)。我想過濾僅在類型B的多邊形的任何的給定半徑內的類型A多邊形。我該怎麼做?在多個其他多邊形的某個半徑內查找多邊形

回答

2

創建使用ST_Collect &然後使用WHERE子句與ST_DWithin到指定距離參數,你的「B」的多邊形的集合。

例如:

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); 

注意的幾何形狀的兩個集合可以是不同的類型(例如多邊形,點,的MultiPolygon等),但它們必須是同投影/座標系統。如果您使用的是標準WGS84(SRID 4326),則距離參數以度爲單位。