多数のポリゴンをST_Unionで結合したあと、ST_Multiでマルチポリゴン化すると、予期せずGeometryCollectionが返ることがある。
GeometryCollectionを扱えない関数が多いので、そんな時にはST_CollectionExtractを利用する。
例)
municipalityテーブルのgeomを、pref-code毎にUNIONしてprefテーブルに登録する。
municipalityテーブルのgeomはシングルポリゴン、prefテーブルに登録する際にはマルチポリゴンにする。
INSERT INTO pref (
municipality-code,
population,
geom)
SELECT pref-code, count(*), ST_CollectionExtract(ST_Multi(ST_Union(geom)), 3) FROM municipality GROUP BY pref-code;