Szukam funkcji do rozpuszczenia wspólnych granic między elementami wielokąta w tabeli. ST_UNION () prawie robi to, czego szukam, ale tworzy wielobok ze wszystkich wielokątów w warstwie, niezależnie od tego, czy mają one wspólną granicę, czy nie. Wolałbym jedynie rozpuszczać granice między wielokątami, które się stykają. Pomyślałem, że powinien istnieć sposób użycia ST_TOUCHES (), ale wtedy potrzeba funkcji rozpuszczania wydaje się tak powszechna, że byłbym zaskoczony, gdyby nie było wbudowanej funkcji, aby to osiągnąć.
Przypadek użycia wygląda następująco: Pobrałem dane Corine Landcover dla dużego kraju europejskiego i chcę zlikwidować granice między różnymi typami lasów (około 75 000 wielokątów w jednej tabeli). Próbowałem ST_UNION, ale nie udało mi się z błędem „brak pamięci” (chociaż 30 000 wielokątów działało):
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)
Uwaga: wszystkie kody lasów zaczynają się od „31”, a ja korzystam z PostGIS 1.4, wersja GEOS: 3.2.0-CAPI-1.6.0