Postgresql:使用Join将多个几何合并为单个几何

时间:2014-07-23 13:51:53

标签: sql postgresql geometry

假设我有两个表geom_levelstaz_geoms,其中taz_geoms的列如下:

taz_geoms

id(int)   state(int)   county(int)  taz(int)  geom(geometry(MultiPolygon,4326))

和geom_levels看起来像这样:

geom_levels

TAZ         COUNTY  STATE   DISTRICT
1           1       29      1
2           1       29      1
3           1       29      1
4           2       29      2
5           2       29      2
6           2       29      2
7           2       29      3
8           3       29      3
9           3       29      3
10          3       29      4
11          3       29      4
12          3       29      4
13          4       29      5
14          4       29      5
15          4       29      5
16          4       29      6
17          4       29      6

我如何将这些taz几何结构组合成县,州和地区的几何形状?我想要一个county_geomsstate_geomsdistrict_geoms表格。我已经看到你可以将ST_UNION与geom数组一起使用,但我如何为县或地区生成这样的数组呢?

我在想各种各样的事情:

SELECT ST_UNION(SELECT geom from taz_geoms GROUP BY county);

以及地区:

SELECT ST_UNION(SELECT geom from taz_geoms t LEFT JOIN geom_levels gl ON gl.taz = t.taz GROUP BY district);

但这些选择看不出来。

想法?

1 个答案:

答案 0 :(得分:0)

尝试:

SELECT ST_UNION( ARRAY ('你选择geoms QUERY'));

在你的情况下:

SELECT ST_UNION(ARRAY((SELECT geom from taz_geoms t LEFT JOIN geom_levels gl ON gl.taz = t.taz GROUP BY district)));

我遇到了同样的问题,并在ARRAY()函数中使用postgre工作;)