6 votos

Eliminación de la geometría vacía con ogr2ogr

Estoy ejecutando ogr2ogr convirtiendo de Shape -> Shape para limpiar los Shapefiles antes de añadirlos a PostGIS vía shp2pgsql.

El problema que estoy encontrando es cuando el Shapefile contiene registros que no tienen geometría lo que está causando problemas con mi sistema.

¿Alguien conoce un modo de utilizar ogr2ogr para excluir los registros sin geometría?

Además, ¿hay alguna forma de eliminar la geometría no válida? Por ejemplo, ¿dos vértices en el mismo lugar?

8voto

Joe Puntos 16

Puedes hacer ambas cosas con el dialecto SQLite http://www.gdal.org/ogr_sql_sqlite.html . El dialecto SQLite le ofrece todas las posibilidades de SQLite http://www.sqlite.org/lang.html y SpatiaLite http://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html . Sin embargo, no estoy seguro de si dos vértices en el mismo lugar hacen que las geometrías no sean válidas.

Para eliminar las geometrías vacías:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "select * from input where geometry is not null" output.shp input.shp

Para corregir geometrías no válidas al mismo tiempo la parte -sql se hace un poco más larga porque hay que escoger los atributos uno por uno a la consulta

ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "select ST_MakeValid(geometry) as geometry, attr_1, attr_2, attr_3, attr_4 from input where geometry is not null" output.shp input.shp

Si resulta que los vértices repetidos no se consideran errores, se pueden eliminar simplificando las geometrías con una tolerancia de cero

ogr2ogr -f "ESRI Shapefile" -dialect sqlite -sql "select ST_Simplify(geometry,0) as geometry, attr_1, attr_2, attr_3, attr_4 from input where geometry is not null" output.shp input.shp

Los comandos no están probados pero editaré la respuesta si no te funcionan.

1voto

Yo no tenía sqlite compilado en mi ogr2ogr pero puedes evitarlo usando el dialecto sql estándar y añadiendo "where ogr_geom_wkt not like '%EMPTY%'"

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