Estou procurando uma função para dissolver limites compartilhados entre recursos de polígono em uma tabela. ST_UNION () quase faz o que estou procurando, mas cria um multipolígono a partir de todos os polígonos da camada, independentemente de compartilharem ou não um limite comum. Prefiro apenas dissolver limites entre polígonos que se tocam. Imaginei que deveria haver alguma maneira de usar ST_TOUCHES (), mas a necessidade de uma função dissolver parece tão comum que ficaria surpreso se não houvesse uma função interna para conseguir isso.
O caso de uso é o seguinte: baixei os dados do Corine Landcover para um grande país europeu e quero dissolver os limites entre os diferentes tipos de floresta (aproximadamente 75.000 polígonos em uma tabela). Eu tentei ST_UNION, mas ele me falha com um erro de "falta de memória" (30.000 polígonos funcionaram):
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)
Nota: Todos os códigos de floresta começam com '31' e estou usando o PostGIS 1.4, versão GEOS: 3.2.0-CAPI-1.6.0