2015-06-14 100 views
0

我有兩個數據集:1. ZipCodes和2.鄰居(將它們想象成類似的縣)。如何檢測postgis中其他(多個)多邊形中的多邊形

我想加入每個附有郵編的街區。大多數社區只能在一個郵政編碼內,但在某些情況下,社區將跨過兩個郵政編碼。因此,例如:

鄰居1是內部20001
鄰居2是內部20002
鄰居3裏面20001,20002

這是我到目前爲止有:

SELECT name, zipcode 
FROM  
neighborhood_names nn, dc_zipcode_boundries dzb 
WHERE ST_Intersects(nn.the_geom, dzb.the_geom); 

注:更新爲根據評論內容,現在得到每個鄰域的答案,但仍然無法讓Array函數按預期做出響應。

+1

你是不是缺少什麼正因爲如此,雖然你可能想要使用ST_Intersects,這也將拿起跨越邊界的郵政編碼。如果你想爲每個鄰域輸出一行,那麼你可以使用array_agg函數,以及GROUP by名字,它將爲你的第三行例子返回類似3,[20001,20002]的東西,而不是兩行。 –

+0

所以我嘗試這樣:
選擇nn.the_geom_webmercator,名稱,string_Agg(郵編, ''),爲從zipcodeArr
neighborhood_names NN,dc_zipcode_boundries DZB 其中ST_Intersects(nn.the_geom,dzb.the_geom)
並且一般會得到錯誤:列「nn.the_geom_webmercator」必須出現在GROUP BY子句中或用於聚合函數中 我做錯了什麼? – Matt617

回答

0

我想通了。感謝John的幫助。我的發言需要一個小組(由於錯誤說了什麼,在點擊之前需要一些時間來消化)。下面

片斷工作了人以下

SELECT name, array_to_string(array_agg(zipcode), ',') 
FROM  
neighborhood_names nn, dc_zipcode_boundries dzb 
WHERE ST_Intersects(nn.the_geom, dzb.the_geom) 
group by name