Я шукаю функцію для розчинення спільних меж між ознаками полігону в таблиці. 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