2015-12-06 51 views
0

因此,我有兩張表格 - PLUTO(地塊)和NYZMA(重劃分區域)。它們看起來像:查找另一個表格內的所有多多邊形

pluto     nyzma 
id | geom    name | geom 
--------------------  ------------------- 
1 | MULTIPOLYGON(x)  A | MULTIPOLYGON(a) 
2 | MULTIPOLYGON(y)  B | MULTIPOLYGON(b) 

而且我希望它吐出這樣的事情,假設PLUTO記錄1是multipolygons A和B,冥王星記錄2既不符合:

pluto_id | nyzma_id 
------------------- 
    1 | [A, B] 
    2 | 

如何對於每個PLUTO記錄的相應幾何圖形,請循環遍歷每個NYZMA記錄,並打印其幾何匹配的任何名稱?

回答

0

使用空間函數ST_Contains加入兩個表。在主查詢中使用GROUP BYARRAY_AGG

WITH subquery AS ( 
    SELECT pluto.id, nyzma.name 
     FROM pluto LEFT OUTER JOIN nyzma 
     ON ST_Contains(nyzma.geom, pluto.geom) 
    ) 
SELECT id, array_agg(name) FROM subquery GROUP BY id; 
相關問題