Menggunakan perangkat lunak open source untuk menggabungkan shapefile besar?


8

Beberapa latar belakang: Saya memiliki 2 file bentuk poligon dengan masing-masing sekitar 500.000 catatan. Kedua file identik dalam hal struktur bidang.

Menggunakan ArcGIS 10.0 Saya tidak bisa menggabungkan kedua file ini menggunakan Geoprocessing / Merge. ArcMap allways mogok di suatu tempat di tengah proses.

Apakah ada perangkat lunak sumber terbuka yang dapat melakukan pekerjaan ini? QGIS memiliki fungsi: Vektor / Menggabungkan file bentuk menjadi satu, tetapi ada bug yang dilaporkan dengan fungsi ini di versi 1.7 saat ini. Saya tahu GDAL dapat melakukan banyak hal dan bertanya-tanya apakah GDAL atau perangkat lunak opensource lain dapat melakukan ini dengan benar.


4
apakah ada kemungkinan Anda melebihi batas 2 Gb untuk shapefile?

Jawaban:


18

Dari manual GDAL:

Penggabungan dua shapefile 'file1.shp' dan 'file2.shp' menjadi file baru 'file_merged.shp' dilakukan seperti ini:

% ogr2ogr file_merged.shp file1.shp
% ogr2ogr -update -append file_merged.shp file2.shp -nln file_merged

Perintah kedua adalah membuka file_merged.shp dalam mode pembaruan, dan mencoba menemukan lapisan yang ada dan menambahkan fitur yang sedang disalin.

Opsi -nln menetapkan nama layer yang akan disalin.

http://www.gdal.org/ogr/drv_shapefile.html


2
--skipfailures memastikan Anda melanjutkan jika Anda menemukan catatan yang buruk juga. Saya akan menambahkannya jika prosesnya terlalu lama.
Ragi Yaser Burhum

Terima kasih jzl5325, ini adalah apa yang saya cari (di samping alternatif untuk melakukannya di ArcMap). Saya pikir ada permintaan yang baik untuk manual / userguide yang berorientasi pada tugas untuk GDAL daripada sintaks. Sesuatu seperti yang ada di jawaban Anda yang dimulai dengan tugas: yaitu untuk menggabungkan file 2 shp, untuk mengkonversi dari tab mapinfo ke esri shp. Daftar panjang "untuk melakukan ini dengan GDAL" akan sangat berguna.
anh.hv

@ anh.hv Setuju. Sesuatu yang ingin saya lakukan jika saya punya sedikit waktu. Saya menduga bahwa hal seperti itu tidak akan terjadi sampai A) itu adalah bagian dari beberapa kursus kuliah atau B) Itu didanai oleh sponsor ke GDAL.
Jay Laura

Jika Anda memiliki banyak file untuk digabung, Anda dapat menggunakan skrip seperti ini: <! - bahasa: lang-bsh -> #! / Bin / bash dest_dir = "output" dest_layer = "shape_file" mkdir -p "$ {dest_dir } "i = 0 untuk src_file di sumber / *. shp; lakukan echo "$ {src_file}" jika [$ i -eq 0]; lalu ogr2ogr "$ {dest_dir} / $ {dest_layer} .shp" "$ {src_file}" lain ogr2ogr -perbarui -append "$ {dest_dir} / $ {dest_layer} .shp" "$ {src_file}" -nln "$ {dest_layer} "fi i = $ ((i +1)) selesai
AndrewHarvey

Jika Anda memiliki banyak file untuk digabungkan, Anda dapat menggunakan skrip seperti ini: gist.github.com/andrewharvey/09f1b77f64c6f529e266
AndrewHarvey

3

Cobalah mengonversi shapefile ke file geodatabase dan kemudian gabungkan mereka di ArcGIS.

Anda bahkan dapat mengubahnya kembali ke bentuk setelah penggabungan (jika Anda mencoba mempertahankan kompatibilitas dengan perangkat lunak lain yang bergantung pada shapefile).


Terima kasih Kevin dan @vadivelan. Menempatkan shp ke file geodatabase benar-benar berfungsi. Ini juga mengurangi ukuran file yang digabungkan sebanyak 4 kali dibandingkan dengan 2 file bentuk asli.
anh.hv

3

Anda bisa mencoba Geomerge . Saya tidak yakin berapa banyak catatan yang bisa ditangani, tetapi selama struktur tabelnya sama untuk semua file saya tidak punya masalah dengan itu.

The MapBrowser tersedia di situs yang sama juga merupakan alat kecil yang sangat baik untuk tampilan cepat dari shapefile tanpa harus membuka paket GIS.


1

Seperti kata Kevin, mengubah file bentuk menjadi fGDB adalah pilihan terbaik. (Ini akan sangat cepat dibandingkan dengan file shp)

Karena, File bentuk memiliki keterbatasan dalam kapasitas penyimpanan, saya pikir file dua bentuk Anda (setelah digabung) berada di luar batas ini. Pls. Periksa itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.