1 votos

Cómo asignar un punto a una etiqueta de polígono desde un shapefile

Tengo un shapefile que divide la ciudad de San Francisco en varios distritos diferentes en función de quién sea su supervisor.

Necesito hacer una herramienta de búsqueda que tome un único valor de lat. larga y diga en qué distrito del supervisor se encuentra el punto. El distrito del supervisor es uno de los atributos del shapefile.

¿Cómo puedo hacer esto de manera eficiente?

Edición 1: Parece que algo así como este es lo que estoy buscando. Tratando de averiguar cómo puedo acceder a los atributos una vez que se encuentra una intersección

2voto

typo Puntos 6

Terminé haciéndolo así. El shapefile era demasiado pequeño para que un rtree supusiera una diferencia de velocidad:

import fiona
from shapely.geometry import Point, shape

def long_lat_to_district(longit, lat, shape_file):

    mypoint = Point(longit, lat)   

    with fiona.open(shape_file) as shp:
        polygons = [poly for poly in shp]

    poly_idx = [i for i, poly in enumerate(polygons)
                if mypoint.within(shape(poly['geometry']))]

    if not poly_idx:
        return None
    else:
        # Take first polygon that overlaps since may overlap with several if on border
        match = polygons[poly_idx[0]]
        return match['properties']

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