Saya menggabungkan beberapa shapefile dan saya punya masalah melakukannya di dalam QGIS, jadi saya menggunakan ogr2ogr secara langsung. Saya melakukan ini (dalam batch):
ogr2ogr -overwrite %destination% %n1%
ogr2ogr -update -append %destination% %n2% -nln all_new
ogr2ogr -update -append %destination% %n3% -nln all_new
ogr2ogr -update -append %destination% %n4% -nln all_new
Ini berfungsi dengan baik, tapi sekarang saya harus memiliki dalam shapefile yang dihasilkan, bidang dengan nama-nama dari shapefile asli yang saya gabungkan. Kedengarannya tidak terlalu sulit, tetapi saya tidak berhasil melakukannya.
Adakah yang bisa membantu? Terima kasih!
Saya akan menggunakan opsi -sql, dan mengimpor shapefile dengan cara berikut:
sumber
ada beberapa cara untuk menggabungkan shapefile.
dan menambahkan atribut ke shapefile @dango directon baik. Anda bisa menggunakan layer.CreateField (field_name) untuk membuat kolom baru yang diisi dari
Saya harap ini membantu Anda ...
sumber
vascobnunes, inilah cara saya menyelesaikan masalah ini dengan menggunakan skrip Python untuk membuat daisy-chain beberapa instruksi ogr2ogr bersamaan. Anda dapat dengan mudah mengubahnya menjadi skrip batch, pada dasarnya saya hanya menyatukan instruksi ogr2ogr (
cmd
), kemudian menjalankannya dengan memanggilos.system(cmd)
, meneruskan perintah ogr2ogr yang saya gabungkan bersama.Senjata rahasianya adalah ( seperti yang ditunjukkan oleh capooti ) menerapkan OGR_SQL untuk memaksakan nama file sebagai nilai konstan dari dataset sumber yang Anda tambahkan ke dalam hasil gabungan Anda.
Dalam contoh saya,
-sql
flag menangani ini, dalam kode seperti ini:Tapi itu membingungkan untuk dibaca karena saya perlu menerapkan tanda kutip tunggal dan ganda dalam rangkaian yang dihasilkan. Untuk melakukan itu saya harus melarikan diri dari tanda kutip tunggal (yaitu \ ') untuk menggunakannya "nyata". Jadi untuk keterbacaan, membantu melihatnya tanpa variabel dan menghindari urutan. Jika Anda berpura-pura nama file adalah "jalan1" untuk iterasi tertentu, hasil gabungan akan terlihat seperti ini dalam kalimat ogr2ogr:
Skrip .py ini adalah penggabungan tiga trik yang saya curi dari matt wilkie (klon kosong dari shapefile), j03lar50n (menambahkan kolom ke shapefile menggunakan ogrinfo dan ogr_sql), dan capooti (menggunakan ogr_sql untuk memaksakan nilai kolom tetap pada semua catatan dalam suatu shapefile). Jadi inilah skrip lengkapnya:
sumber
Tambahkan kolom dengan nama file sumber dari folder shapefile. Memerlukan GDAL 1.10dev, upaya saya untuk menjatuhkan ekstensi .shp tidak berfungsi - tetapi secara keseluruhan, berfungsi. - Saya membayangkan itu bisa ditambahkan ke garis yang melakukan penggabungan dengan OGR.
sumber
Hai, mungkin tautan ini akan membantu. Ini menunjukkan cara menambahkan feild ke shapefile menggunakan binding python gdal.
sumber
Di dalam QGIS Anda dapat menambahkan plugin Merge Shapefile. Ada opsi untuk "Tambahkan kolom dengan nama file"
sumber
Versi JaaKL yang sedikit dimodifikasi. Perhatikan bahwa -append foo.shp dan -nln foo harus cocok. Juga, perhatikan penggunaan dialek SQLite (GDAL tampaknya tidak menerima kata kunci 'Perbarui', sehingga dialek SQLite harus digunakan instaed), dan tidak adanya kata kunci 'TABLE' setelah kata 'UPDATE' (tidak diperlukan) atau diterima oleh SQLite).
sumber
Agak terlambat untuk berdiskusi, tapi sekarang juga ada ogrmerge
sumber