Rimuovere le colonne non necessarie dal file di dati geografici?


10

Ho alcuni dati GML che contengono alcune colonne non necessarie. Vorrei rimuovere queste colonne per ridurre le dimensioni del file. (Per chiarire: intendo che il file contiene molti punti, e ognuno di questi punti ha alcuni metadati allegati e non ho bisogno di tutti i metadati.)

Vorrei anche farlo dalla riga di comando, poiché ho molti file.

Posso convertire i file GML in diversi formati utilizzando ogr2ogr, quindi la mia domanda è questa: qual è il modo più semplice per rimuovere una colonna da un file di dati geografici, dalla riga di comando?

Sono un programmatore Python, quindi il mio istinto sarebbe quello di convertire il file in GeoJSON, quindi utilizzare i metodi di analisi JSON di Python per leggere e riscrivere il file JSON.

Ma forse c'è un modo più diretto, usando uno strumento GDAL o simile.

Risposte:


10

Lo shapefile come formato di file temporaneo non è necessario e potrebbe anche alterare i dati GML (abbreviare i nomi degli attributi, tagliare le stringhe a max 255 caratteri, cambiare DATETIME in DATE ecc.)

Userei ogr2ogr non eliminando gli attributi indesiderati ma selezionando quelli desiderati. Il dialetto SQLite SQL è più standard del dialetto OGR predefinito, per questo motivo lo uso anche se non è necessario per questa query.

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

9

È possibile eliminare un campo utilizzando OGR SQL e scegliendo un formato OGR che supporti l'eliminazione del campo. Sfortunatamente GML non lo supporta, quindi devi passare attraverso un altro formato, ad esempio 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

Sono stato in grado di fare una cosa più semplice e simile con il driver GeoJSON; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" Nota l'uso del nome del file come tabella su ALTER.
vpipkt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.