Je recherche une fonction pour dissoudre les limites partagées entre les entités surfaciques d'une table. ST_UNION () fait presque ce que je recherche, mais il crée un multipolygone à partir de tous les polygones de la couche, qu'ils partagent ou non une frontière commune. Je préfère seulement dissoudre les frontières entre les polygones qui se touchent. J'ai pensé qu'il devrait y avoir un moyen d'utiliser ST_TOUCHES () mais le besoin d'une fonction de dissolution semble si commun que je serais surpris s'il n'y avait pas de fonction intégrée pour y parvenir.
Le cas d'utilisation ressemble à ceci: j'ai téléchargé les données Corine Landcover pour un grand pays européen et je veux dissoudre les frontières entre les différents types de forêts (environ 75 000 polygones dans une table). J'ai essayé ST_UNION, mais il m'échoue avec une erreur de "mémoire insuffisante" (30 000 polygones fonctionnaient cependant):
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)
Remarque: Tous les codes forestiers commencent par '31' et j'utilise PostGIS 1.4, version GEOS: 3.2.0-CAPI-1.6.0