Hapus kolom yang tidak dibutuhkan dari file data geografis?

10

Saya memiliki beberapa data GML yang memiliki beberapa kolom yang tidak dibutuhkan di dalamnya. Saya ingin menghapus kolom ini untuk mengurangi ukuran file. (Untuk memperjelas: Maksud saya file tersebut memiliki banyak poin di dalamnya, dan masing-masing poin ini memiliki beberapa metadata yang terlampir, dan saya tidak memerlukan semua metadata.)

Saya juga ingin melakukan ini dari baris perintah, karena saya punya banyak file.

Saya dapat mengonversi file GML ke dalam format yang berbeda menggunakan ogr2ogr, jadi pertanyaan saya adalah ini: apa cara termudah untuk menghapus kolom dari file data geografis, dari baris perintah?

Saya seorang programmer Python sehingga insting saya adalah untuk mengkonversi file ke GeoJSON, kemudian menggunakan metode parsing JSON Python untuk membaca dan menulis ulang file JSON.

Tapi mungkin ada cara yang lebih langsung, menggunakan alat GDAL atau sejenisnya.

Richard
sumber

Jawaban:

10

Shapefile sebagai format file sementara tidak diperlukan dan itu juga dapat mengubah data GML (mempersingkat nama atribut, memotong string hingga maks 255 karakter, mengubah DATETIME ke DATE, dll.)

Saya akan menggunakan ogr2ogr bukan dengan menjatuhkan atribut yang tidak diinginkan tetapi dengan memilih yang diinginkan. Dialek SQLite SQL lebih standar daripada dialek OGR defauld, itu sebabnya saya menggunakannya bahkan tidak perlu untuk query ini.

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

Anda dapat menghapus bidang menggunakan OGR SQL dan memilih format OGR yang mendukung penghapusan bidang. Sayangnya GML tidak mendukungnya, jadi Anda harus melewati format lain, misalnya 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
sumber
Saya dapat melakukan hal yang lebih sederhana dan serupa dengan driver GeoJSON; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" Perhatikan penggunaan nama file sebagai tabel untuk ALTER.
vpipkt