¿Eliminar columnas innecesarias del archivo de datos geográficos?

10

Tengo algunos datos GML que tienen algunas columnas innecesarias. Me gustaría eliminar estas columnas para reducir el tamaño del archivo. (Para aclarar: quiero decir que el archivo tiene muchos puntos, y cada uno de estos puntos tiene algunos metadatos adjuntos, y no necesito todos los metadatos).

También me gustaría hacer esto desde la línea de comandos, ya que tengo muchos archivos.

Puedo convertir los archivos GML en diferentes formatos usando ogr2ogr, así que mi pregunta es esta: ¿cuál es la forma más fácil de eliminar una columna de un archivo de datos geográficos, desde la línea de comandos?

Soy un programador de Python, por lo que mi instinto sería convertir el archivo a GeoJSON, luego usar los métodos de análisis JSON de Python para leer y reescribir el archivo JSON.

Pero tal vez hay una forma más directa, utilizando una herramienta GDAL o similar.

Ricardo
fuente

Respuestas:

10

Shapefile como formato de archivo temporal no es necesario y también puede alterar los datos GML (acortar nombres de atributos, cortar cadenas a un máximo de 255 caracteres, cambiar DATETIME a DATE, etc.)

Usaría ogr2ogr no soltando atributos no deseados sino seleccionando los que se desean. El dialecto SQLite SQL es más estándar que el dialecto OGR predeterminado, es por eso que uso que incluso no es necesario para esta consulta.

ogr2ogr -f GML -dialect SQLite -sql "SELECT attr1, attr2, attr3,... FROM layer" output.gml input.gml
usuario30184
fuente
9

Puede eliminar un campo utilizando OGR SQL y elegir un formato OGR que admita la eliminación del campo. Desafortunadamente, GML no lo admite, por lo que debe pasar por otro formato, por ejemplo, SHP:

ogr2ogr temp.shp input.gml
ogrinfo temp.shp -sql "ALTER TABLE temp DROP COLUMN field_to_drop"
ogr2ogr -f GML output.gml temp.shp
Antonio Falciano
fuente
Pude hacer una cosa más simple y similar con el controlador GeoJSON; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" Tenga en cuenta el uso del nombre del archivo como tabla para ALTERAR.
vpipkt