У меня есть несколько перекрывающихся полигонов, и я пытаюсь разделить пространство, чтобы избежать перекрывающихся. Я думаю, что моя проблема довольно проста. Используя некоторый продукт ESRI и http://arcscripts.esri.com/details.asp?dbid=16700, мой коллега вычислил его за 48 секунд.
Я пытаюсь сделать это с помощью postgis, используя http://s3.opengeo.org/postgis-power.pdf#page=24 (угадывая детали, используя http://trac.osgeo.org/postgis/wiki/UsersWikiSimplifyPreserveTopology как вдохновение) но это так медленно, что я не могу сделать это с более чем 10 полисами (у меня есть 800 из них, чтобы разделить). Медленная часть - это ST_Union, я пробовал разные вещи, но ни одна из них не была успешной, вот текущее состояние дел:
select geom from
(select st_linemerge(st_union(geom)) as geom from
(select st_exteriorring((st_dumprings((st_dump(t.geom)).geom)).geom) as geom from
(SELECT geometry AS geom, id
FROM tt
WHERE campaign_id = 204
ORDER BY id limit 200) t) t2) t3
это было вычисление в течение 26 минут (linemerge () на самом деле нет). Polys - это MultiPolygons на случай, если st_dump вас не устраивает.
У вас есть совет? St_union () линейной работы - очень медленная часть.
Спасибо,
Нико.
PS: вот некоторые числа: 852 мультиполигона, что приводит к 14880 полигонам, что приводит к 21467 линейным строкам, что составляет 315513 вершин.