Las uniones espaciales en GeoPandas son posibles mediante el método 'sjoin'. Sin embargo, esto requiere además el concurso del módulo Python 'Rtree' (instalado con easy_install) y la librería libspatialindex tomada de los repositorios de mi Debian.
El objetivo considerado en este post es usar el modificador op='within' en 'sjoin' para obtener un shapefile de puntos que refleje aquellos que están contenidos dentro de los rasgos de una capa tipo polígono. La situación se visualiza como:El código siguiente permite obtener el referido shapefile:
1 2 3 4 5 6 7 | from geopandas import gpd points = gpd.GeoDataFrame.from_file('/home/zeito/pyqgis_data/random_points.shp') # or geojson etc polys = gpd.GeoDataFrame.from_file('/home/zeito/pyqgis_data/polygon8.shp') pointInPoly = gpd.sjoin(points, polys, op='within') pointInPoly.to_file('/home/zeito/pyqgis_data/pointInPoly.shp') |
En la imagen a continuación se observa el shapefile producido cargado en la Map View de QGIS. En su tabla atributiva se han creado automáticamente campos ('index_righ', 'FID') que refieren la inclusión de los puntos según el rasgo de la capa polígono considerado. A modo de ejemplo, se tiene que los puntos con ids (estos no se visualizan en la imagen) 8, 12 y 18, tres en total, se encuentran en el interior del rasgo con FID igual 1 (tal como se esperaba).
Si se desea, esta cuenta puede determinarse e incluirse en el shapefile tipo polígono.
No hay comentarios:
Publicar un comentario