[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