[Gvsig_usuarios] Intersecar de forma automática una capa de puntos o polígonos con una o varias capas de polígonos

Óscar Martínez masquesig en gmail.com
Jue Nov 26 10:18:51 CET 2015


Buenas,

Con un script rápido creo que puede hacerte buena función.

Para cargar un script: https://www.youtube.com/watch?v=7c_6KetDOAM

Necesitas tener una vista con las capas cargadas, y una capa de puntos 
seleccionada.

Lo que hace es buscar en todo el resto de capas que tengas en esa vista 
las posibles intersecciones, mostrando los valores por consola, dando 
una salida similar a esta:
Running script listas_info_interseccion.

Point info:  {u'campo2': u'Venecia', u'campo1': 101L}
- Layer:  valencia_index
--  {u'fecha': u'1980-01-01', u'location': 
u'/cdrom/data/cartografia/Valencia/valencia1980.ecw'}
--  {u'fecha': u'1992-01-01', u'location': 
u'/cdrom/data/cartografia/Valencia/valencia1992.ecw'}
--  {u'fecha': u'2002-01-01', u'location': 
u'/cdrom/data/cartografia/Valencia/valencia2002.ecw'}
- Layer:  parcelas_Valencia
--  {u'PARCELA': u'03', u'AREA': 327L, u'FECHAALTA': 20011119, 
u'MUNICIPIO': 900, u'MAPA': 242, u'COORX': 725957.12, u'NUMERO': 4, 
u'FECHABAJA': 99999999, u'NUMERODUP': u'', u'MASA': u'59286', 
u'NUMSYMBOL': 6, u'VIA': 1321, u'HOJA': u'YJ2752H', u'COORY': 4372804.5, 
u'TIPO': u'U', u'DELEGACIO': 46}
- Layer:  manzanas_valencia
--  {u'AREA': 1061L, u'FECHAALTA': 20011119, u'MUNICIPIO': 900, u'MAPA': 
242, u'COORX': 725927.0, u'FECHABAJA': 99999999, u'MASA': u'59286', 
u'NUMSYMBOL': 2, u'HOJA': u'YJ2752H', u'IDX': u'1234', u'COORY': 
4372811.0, u'TIPO': u'U', u'DELEGACIO': 46}

Point info:  {u'campo2': u'Paris', u'campo1': 102L}
- Layer:  valencia_index
--  {u'fecha': u'1980-01-01', u'location': 
u'/cdrom/data/cartografia/Valencia/valencia1980.ecw'}
--  {u'fecha': u'1992-01-01', u'location': 
u'/cdrom/data/cartografia/Valencia/valencia1992.ecw'}
--  {u'fecha': u'2002-01-01', u'location': 
u'/cdrom/data/cartografia/Valencia/valencia2002.ecw'}
- Layer:  parcelas_Valencia
- Layer:  manzanas_valencia

Como ves, muestra los valores de los polígonos que intersecan con cada 
punto.

Es posible que funcione también si seleccionas una capa de polígonos al 
inicio.  Al menos te puede servir de punto de partida. Ya nos comentas 
si algo así te es útil.

Un saludo,
Óscar


Código:

from gvsig import *

def infoInter(featurePoint, lstLayers):
     pointValues = featurePoint.getValues()
     pointValues.pop('GEOMETRY')
     gfeat = featurePoint.geometry()
     print "\nPoint info: ", pointValues
     for layer in lstLayers:
         print "- Layer: ", layer.name
         for pol in layer.features():
             polValues = pol.getValues()
             gpol = pol.geometry()
             polValues.pop('GEOMETRY')
             if gpol.intersects(gfeat):
                 print "-- ", polValues



def main(*args):
     #Intersection info
     lyrPoints = currentLayer()

     #Capas diferentes a la de puntos
     lstLayers = []
     for capa in currentView().getLayers():
         if not capa.name == lyrPoints.name:
             lstLayers.append(capa)

     #intersecar puntos
     for point in lyrPoints.features():
         infoInter(point, lstLayers)

On 25/11/2015 23:04, Jose Manuel Mora Fallas wrote:
> Buenas, tengo la siguiente consulta, en el lugar en que trabajo se 
> hacen diferentes tipos de trámites, muchos de ellos implican saber 
> determinar si uno o varios puntos o uno o varios polígonos traslapan 
> por ejemplo con cuencas hidrográficas, áreas protegidas, entre otros.
>
> ¿existe alguna forma de hacer esto automatizado?
>
> Es decir elijo la capa uno la cual puede tener uno o varios atributos 
> y pedir que se interseque con otras capas y que me indique cuáles de 
> esos puntos se encuentran dentro de una cuenca hidrográfica, un área 
> protegida, una provincia, entre otros.
>
> Atentamente,
>
> -- 
> _________________________
> Jose Manuel Mora Fallas
> www.acto.go.cr <http://www.acto.go.cr>
>
>
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:
>
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20151126/16fa6716/attachment.htm 


Más información sobre la lista de distribución gvSIG_usuarios