テーブル内のポリゴンフィーチャ間の共有境界を解消する関数を探しています。ST_UNION()は、私が探していることをほぼ実行しますが、共通の境界を共有するかどうかに関係なく、レイヤー内のすべてのポリゴンからマルチポリゴンを作成します。むしろ、互いに接触するポリゴン間の境界のみをディゾルブします。ST_TOUCHES()を使用する方法があるはずですが、ディゾルブ関数の必要性は非常に一般的であるため、これを実現する組み込み関数がない場合は驚くでしょう。
ユースケースは次のようになります。ヨーロッパの大規模な国のCorine Landcoverデータをダウンロードし、異なるフォレストタイプ(1つのテーブルに約75,000ポリゴン)の境界を解消したいと思います。ST_UNIONを試しましたが、「メモリ不足」エラーで失敗します(ただし、30,000ポリゴンは機能しました)。
create table corine00 as
select st_union(the_geom) as the_geom,
sum(area_ha) as area_ha,
substr(code_00,1,2) as code_00
from clc00_c31_forests
group by substr(code_00,1,2)
注:すべてのフォレストコードは「31」で始まり、PostGIS 1.4、GEOSバージョン:3.2.0-CAPI-1.6.0を使用しています