Estoy buscando una función para disolver límites compartidos entre características poligonales en una tabla. ST_UNION() casi hace lo que busco, pero crea un multipolígono a partir de todos los polígonos de la capa independientemente de si comparten o no un límite común. Preferiría disolver sólo los límites entre los polígonos que se tocan entre sí. Me imaginé, que debería haber alguna manera usando ST_TOUCHES() pero entonces la necesidad de una función de disolver parece tan común que me sorprendería si no hay una función incorporada para lograr esto.
El caso de uso es el siguiente: He descargado los datos de Corine Landcover de un gran país europeo y quiero disolver los límites entre los diferentes tipos de bosque (aprox. 75.000 polígonos en una tabla). He probado ST_UNION, pero me falla con un error de "memoria agotada" (aunque 30.000 polígonos sí funcionaron):
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 los códigos forestales empiezan por "31" y estoy utilizando PostGIS 1.4, GEOS versión: 3.2.0-CAPI-1.6.0