9 votos

¿Hay un pitón opción a "atributos de ubicación"?

Estoy tratando de realizar la función join attributes by location como aparecen en el menú QGIS vectorial > herramientas de administración de datos. Estoy buscando una opción de python de código abierto para esto. Sé arcpy tiene un spatial join función pero yo estoy tratando de realizar este fuera del entorno de ESRI.

9voto

Denis Kash Puntos 16

Puede que desee echar un vistazo a bien formada y Fiona. Fiona es un contenedor para gdal para hacer espaciales exportación e importación de archivos fácil. Bien formada proporciona la geometría de la funcionalidad. Aquí es un ejemplo muy simple para dar la idea. Se une polígono atributos para todos los puntos dentro de ese polígono.

Los datos de ejemplo que he usado son estos polígonos y estos puntos.

import fiona
from shapely.geometry import shape
from copy import deepcopy

with fiona.open("planning_neighborhoods.shp", "r") as n: 

    with fiona.open("Schools_Private_Pt.shp", "r") as s:

        # create a schema for the attributes
        outSchema =  deepcopy(s.schema)
        outSchema['properties'].update(n.schema['properties'])

        with fiona.open ("Schools_withNbhd.shp", "w", s.driver, outSchema, s.crs) as output:

            for school in s: 
                for neighborhood in n:
                    # check if point is in polygon and set attribute
                    if shape(school['geometry']).within(shape(neighborhood['geometry'])):  
                        school['properties']['neighborho'] = neighborhood['properties']['neighborho'] 
                    # write out
                        output.write({                                 
                            'properties': school['properties'], 
                            'geometry': school['geometry']
                        })

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X