Me gustaría convertir algunos archivos shp basados en polígonos que tienen varias características de polígono en puntos para cada característica que representarían esencialmente el centro de cada característica de polígono. Sé que en el mundo de ArcGIS podría usar la herramienta Feature To Point, pero me gustaría mantener esto en una secuencia de comandos que se pueda ejecutar en PC que no tengan arcpy, así que estoy buscando una alternativa de código abierto para eso. ¿Alguien sabe de una biblioteca que podría usar para esto junto con alguna dirección sobre cómo aprovecharlo para lograr esto?
9
Respuestas:
Puede ejecutar un
ogr2ogr
comando (por ejemplo, desde un Shell OSGeo4w). Por ejemplo, en un archivo de forma de países:El nuevo archivo de forma
countries_centroid.shp
debe ser similar a la entrada, pero solo debe contener un punto por [Multi] Polígono.@PEL también muestra un buen ejemplo con ST_PointOnSurface, que es fácil de sustituir en este comando.
Se puede hacer algo similar en Python, si es necesario, pero puede tomar algunas líneas de código más:
fuente
gdal-bin
incluir este soporte.Simplemente use Fiona o GeoPandas (Python 2.7.xy 3.x)
Algunos polígonos
Transformación a puntos (centroides)
Resultado
fuente
Otra forma, quizás más 'de bajo nivel', sería usar directamente
fiona
yshapely
para E / S y procesamiento de geometría.fuente
Creo que la forma más fácil es usar gdal / ogr Virtual Format. ( http://www.gdal.org/drv_vrt.html ) y dialecto SQL / SQLITE ( http://www.gdal.org/ogr_sql.html y https://www.gaia-gis.it/spatialite-3.0 .0-BETA / spatialite-sql-3.0.0.html )
Mi archivo de forma poligonal se llama poly.shp. Luego creo este XML como archivo llamado vrt.vrt. Dentro de este archivo (vrt.vrt), aquí el contenido para convertir a puntos
En este momento, puede integrar este archivo en Qgis para validarlo. Por supuesto, la representación es más lenta que la fuente sin procesar porque cada característica se convierte como punto en cada consulta de representación.
Después, convierta este archivo (vrt.vrt) en otra cosa usando las utilidades gdal / ogr de un shell / script de python
Obtiene un archivo de forma de punto llamado point_from_vrt.shp.
fuente
'wkbPoints' is not a valid value of the atomic type