Tengo un montón de polígonos superpuestos y estoy tratando de dividir el espacio para evitar que se superpongan. Creo que mi problema es bastante simple. Utilizando algún producto ESRI y http://arcscripts.esri.com/details.asp?dbid=16700, mi compañero de trabajo lo calculó en 48 segundos.
Estoy tratando de hacerlo con postgis usando http://s3.opengeo.org/postgis-power.pdf#page=24 (adivinando los detalles, usando http://trac.osgeo.org/postgis/wiki/UsersWikiSimplifyPreserveTopology como inspiración) pero es tan lento que no puedo hacerlo con más de 10 polys (tengo 800 para dividir). La parte lenta es la ST_Union, probé varias cosas, pero ninguna fue exitosa, aquí está el estado actual de las cosas:
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
esto ha estado computando durante 26 minutos (el linemerge () en realidad no lo es). Los polys son MultiPolygons en caso de que st_dump te moleste.
¿Tienes algún consejo? El st_union () de la línea es la parte muy lenta.
Gracias,
Nico
PD: aquí hay algunos números: 852 multipolígonos, que conducen a 14880 polígonos, que conducen a 21467 cadenas lineales que suman 315513 vértices.
fuente
Respuestas:
Es posible que esta respuesta no ayude a @nraynaud directamente, pero con suerte arrojará algo de luz sobre el tema.
Hay un problema similar en spatiaLite <4.0 debido a un problema con GEOS. Vea este enlace para una discusión del tema.
La solución alternativa es reemplazar la función ST_Union () con ST_UnaryUnion (ST_Collect ()). Desafortunadamente, ST_UnaryUnion no está disponible hasta postGIS 2.0 (por lo que puedo decir).
fuente
¿Qué versión de PostGIS estás usando? La unión es mucho más lenta si está utilizando PostGIS <1.4 o GEOS <3.2. Se introdujo una unión mucho más rápida en 1.4, pero también requiere GEOS 3.2+. Primero, si está usando una versión inferior a 1.4, actualizaría a al menos 1.5.
Verificar.
También es su intención mantener los bordes originales de los polígonos. Si solo quiere disolver áreas superpuestas,
Haría el truco.
fuente