Я ищу функцию для растворения общих границ между полигонами в таблице. ST_UNION () почти делает то, что я ищу, но он создает мультиполигон из всех многоугольников слоя независимо от того, имеют ли они общую границу или нет. Я бы предпочел только расторгнуть границы между полигонами, которые касаются друг друга. Я подумал, что должен быть какой-то способ использования ST_TOUCHES (), но тогда потребность в функции растворения кажется настолько распространенной, что я был бы удивлен, если бы не было встроенной функции для достижения этой цели.
Вариант использования выглядит следующим образом: я скачал данные Corine Landcover для большой европейской страны, и я хочу растворить границы между разными типами лесов (около 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