Bagaimana cara mengganti nama nama bidang dalam shapefile dari commandline?

20

Saya perlu mengganti nama nama bidang (atribut) di sebuah shapefile. Apakah ada cara mudah untuk melakukan ini dari baris perintah?

rudivonstaden
sumber

Jawaban:

31

Anda dapat menggunakan utilitas ogr2ogr yang dikemas dengan alat-alat baris perintah gdal . Gunakan -sqlopsi sebagai berikut:

ogr2ogr outputfile.shp inputfile.shp -sql "SELECT oldfield1 AS newfield1, oldfield2 AS newfield2 from inputfile"

Sebagai bonus tambahan, Anda dapat mengubah data menjadi format yang berbeda pada saat yang sama, atau memfilter data Anda dengan menentukan klausa di mana. Perhatikan bahwa Anda harus menentukan semua bidang output jika Anda menggunakan metode ini (bidang apa pun yang tidak termasuk dalam pernyataan SELECT akan dihapus dari file output).

rudivonstaden
sumber
2
Anda juga dapat membuat daftar nama bidang menggunakanogrinfo -so inputfile.shp inputfile
Mike T
Catatan tambahan: metode ini hanya berfungsi saat mentransformasi shapefile. Misalnya, jika menggunakan format data GeoJSON, Anda harus terlebih dahulu mengonversinya menjadi shapefile, lalu lakukan transformasi lain menggunakan -sqlflag.
clhenrick
Anda juga harus menambahkan opsi -Dialect SQLITE jika tidak ogr2ogr akan melemparkan kesalahan 6: output_file.shp harus mengandung setidaknya satu bidang atribut 1
Dmitriy Litvinov