2016-07-29 5 views
0

多角形(または多角形、私はよく分かりませんが...重要ですか?)で定義された1つのタイプ(A)のテーブルを持っています。 CTE、別のCTEの別のタイプ(B)の別のCTEがあります。指定された半径の範囲内にあるAタイプのポリゴンをフィルタリングしたいと思います。のいずれかのタイプBのポリゴンです。どうすればよいですか?他の多角形の特定の半径内のポリゴンを見つける

答えて

2

は、あなたの距離パラメータを指定するST_DWithinでWHERE句を使用し、その後にST_Collect &を使用して、「B」ポリゴンのコレクションを作成します。例えば

:ジオメトリの両方のセットは、異なるタイプ(例えばポリゴン、ポイント、MultiPolygonの、など)であってもよいが、それらは座標系/同じ投影でなければならない

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)を使用している場合、距離パラメータは度で表されます。

関連する問題