Hola de nuevo!! Tras varias pruebas ahi va la mejor solución que he
encontrado para este caso.....
Tengo dos capas de polígonos que quiero interceptar se generan geometrías
complejas , dentro de las cuales hay polígonos:
-Compruebo que ambas capas se pueden intersectar y que devolverán un
conjunto no vacío:
select count(*) from psuelos s,pusossuelo u where
st_intersects(s.geom,u.geom)='true'
Tipos de geometría de la intersección: Polygon (185), Multipolygon(75) y
GeometryCollection(2)
-Creo una tabla nueva y vacía donde almacenare esta intersección:
create table int500 (gid serial PRIMARY KEY, tsuelo INTEGER, tuso INTEGER)
select addgeometrycolumn ('','int500','geom',-1,'MULTIPOLYGON',2)
En este caso ya añadimos la restricción de geometría para la futura nueva
capa; Multipolygon. Con lo que tanto los 'Polygon' como los polígonos
contenidos en GeometryCollection han de ser transformados a Multipolygon.
-Almanceno el resultado de la intersección en la tabla creada:
insert into int500 (tsuelo,tuso,geom) select
s.tsuelo,u.tuso,st_multi(stx_extract(st_intersection(s.geom,u.geom),2)) from
psuelos s,pusossuelo u where st_intersects(s.geom,u.geom)
El resultado es una capa de tipo Multipolygon con 262 elementos (185+175+2)
Para este ultimo apartado he probado varias cosas y funciones, y no todas
obtenían el resultado buscado o lo dejaba incompleto. Finalmente, y
siguiendo las recomendaciones y explicaciones del autor, he optado por usar
la función stx_extract() que siempre nos devolverá un resultado óptimo.
Nota: Bibliografia de referencia: 'PostGis 2. Análisis Espacial Avanzado.
Aut: José Carlos Martínez Llario'
Gracias por la ayuda,
Juanjo
--
View this message in context:
http://osgeo-org.1560.x6.nabble.com/Error-al-realizar-interseccion-Postgis-tp5249267p5249674.html
Sent from the OSGeo Spanish Local Chapter mailing list archive at Nabble.com.
_______________________________________________
Spanish mailing list
http://lists.osgeo.org/mailman/listinfo/spanish
http://es.osgeo.org
http://twitter.com/osgeoes