Bagaimana cara menghindari membuat Shapefile yang rusak selama Editing?

15

Saya memiliki salah satu teknisi GIS saya yang mendigitalkan beberapa baris dalam QGIS dalam format shapefile. Saya tidak tahu bagaimana dia melakukannya (dan dia juga tidak), tetapi entah bagaimana shapefile menjadi korup. Itu menciptakan garis acak atau beberapa garis yang dia ciptakan akan hilang begitu saja. Saya masuk ke ArcCatalogue untuk melihat bagaimana tampilannya di ArcGIS dan inilah yang saya lihat:

masukkan deskripsi gambar di sini

Perhatikan ikon tanda tanya di mana saya akan melihat ikon 'garis' shapefile. Jelas ArcCatalogue tidak dapat membaca file ini. Juga, file dbf kedua tampaknya telah dibuat dengan '_packed' terpasang di akhir. Ketika saya melihat shapefile menggunakan Windows explorer, saya melihat bahwa sudah ada. yang berbicara dengannya.

Saya mencoba menambahkan file ini ke ArcMap dan saya menerima kesalahan berikut:

masukkan deskripsi gambar di sini

Kesalahannya cukup jelas ... jumlah bentuk tidak cocok dengan jumlah catatan. Saya hanya tidak tahu mengapa itu terjadi. Sepertinya tidak ada sesuatu yang online yang menjelaskan bagaimana hal ini terjadi di QGIS, tetapi saya memang melihat beberapa alat perbaikan. Saya benar-benar memperbaiki ini sendiri dengan hanya membuka QGIS, menambahkan layer, dan kemudian mengklik kanan pada layer dan 'menyimpan sebagai' shapefile lain. Jadi, saya sudah menemukan jalan keluar, tapi saya berharap untuk menemukan solusi yang akan menghentikan ini terjadi sejak awal. Terima kasih, Mike

Mike
sumber
1
Saya telah menggunakan QGIS selama bertahun-tahun dan belum pernah melihat masalah ini sebelumnya. Penampilan "ajaib" dari .dbf lainnya menunjukkan bahwa Shapefile telah dirusak di luar QGIS. Jika Anda dapat mereproduksi bug menggunakan QGIS saja, silakan ajukan laporan bug. Itu akan sangat penting!
underdark
Saya sudah mencoba mereplikasi masalah tanpa hasil. Satu hal yang saya perhatikan adalah bahwa, tidak seperti di ArcGIS, saya tidak mendapatkan pesan kunci skema ketika mengedit di QGIS (yaitu jika seseorang memiliki kunci skema pada shapefile dan Anda mulai mengedit yang sama, ArcGIS akan membuat kesalahan saat menyimpan edit. QGIS tidak) Saya berpikir bahwa ini menyimpan aneh ketika Anda menyimpan shapefile yang skemanya terkunci. Saya tidak 100% yakin ini penyebabnya, tetapi sesuatu yang patut dicatat.
Mike
Saya juga memiliki kesalahan ini muncul saat mengedit shapefile. Pekerjaan saya hanya untuk mengedit saya di ArcMap. Jelas itu bukan solusi nyata - tetapi - Anda tidak sendirian dalam mengalami kesalahan semacam ini.
Kevin
Sudahkah Anda mencoba mengubah nama file ..._ SMC.dbf menjadi ..._ SMC.dbf.backup dan ..._ SMC_packed.dbf menjadi ..._ SMC.dbf?
Matthias Kuhn
2
hai masalah yang sama dengan Dufur. File yang dibuat di lingkungan q gis saja. Itu terjadi ketika saya mengedit bentuk dan akhirnya pergi untuk menyimpan dan kemudian berhenti mengedit, sehingga garis-garisnya menghilang dan tabel atribut tampaknya tidak memiliki data. jika mencoba memuat lagi bentuk pada qgis itu terlihat kosong. Dalam folder, file es. mario.shx telah menjadi mario_packed.shp. Saya menemukan bahwa menghapus kata yang dikemas dari nama (itu kembali mario.shx) bentuknya sekarang dimuat dan tampaknya berfungsi. Berapa lama? tidak tahu saya hanya akan gila dengan ini
user27144

Jawaban:

16

Penjelasan

OGR (bagian dari GDAL) adalah perpustakaan yang digunakan oleh QGIS untuk mengakses shapefile. Ketika OGR menghapus fitur itu tidak segera menghapusnya, tetapi hanya menandai fitur sebagai dihapus. Sesekali, perintah yang disebut repack dijalankan, yang membuat file baru dengan akhiran _repack dan menyalin semua fitur yang tidak ditandai sebagai dihapus ke file baru ini. Setelah selesai, .dbf asli diganti dengan _repack.dbf. Kemudian melakukan hal yang sama ke shapefile: membuat yang baru (_packed.shp), menyalin semua fitur yang tidak dihapus dan akhirnya mengganti .shp yang asli.

Tampaknya di suatu tempat dalam proses ini, sesuatu gagal (mungkin macet?).

Dalam proses ini, id fitur berubah, jadi saya kira, bahwa shp (geometri) yang Anda miliki dan dbf (tabel atribut) menggunakan id fitur yang berbeda untuk fitur yang sama, yang mengarah pada perilaku aneh yang Anda alami. Tampaknya, salah satu dari dua file masih berisi (bagian dari) fitur yang dihapus sementara yang lain tidak.

Bagaimana menghadapi ini

Pembaruan, November 2016: GDAL 2.2 dikirimkan dengan fungsi bawaan untuk memanggil pengemasan ulang secara otomatis setiap kali file ditulis ke disk. Jadi sebelum melakukan hal lain: periksa versi GDAL dalam dialog tentang QGIS dan perbarui rilis GDAL Anda (sering dikirim sebagai bagian dari QGIS) ke versi terbaru.

Mungkin tidak banyak yang dapat Anda lakukan selain membuat cadangan reguler agar tidak kehilangan lebih banyak data daripada yang dapat Anda tangani (Anda tetap melakukannya, kan? 😉). Dan jika Anda menemukan cara untuk mereproduksi ini (terbaik dengan dataset sampel) buat laporan bug .

Jika Anda mengalami masalah ini lagi, Anda juga dapat mencoba membuat indeks spasial pada shapefile. Dalam proses ini, QGIS akan memanggil repack lagi pada shapefile, dan mungkin "memperbaiki" shp / dbf. Tapi ini hanya dugaan yang belum diverifikasi.

Seperti yang disebutkan oleh @rhm dan di komentar, mungkin juga membantu untuk mengubah nama file {xyz} _packed. {Ext} menjadi {xyz}. {Ext} . Jika file yang dikemas telah sepenuhnya ditulis dan itu hanya nama yang gagal, itu benar-benar valid untuk melakukan langkah ini secara manual. Namun jika file _packed belum sepenuhnya ditulis, Anda mungkin kehilangan informasi dari bagian fitur Anda. Jadi sebelum Anda mencoba ini, buat salinan cadangan dari semua file yang terlibat.

Informasi latar belakang tentang kapan pengemasan ulang dipanggil

Antara QGIS 2.0 dan 2.8 repack telah dipanggil setiap kali layer diturunkan (keluar QGIS, muat proyek yang berbeda ...). Jika fitur telah dihapus atau geometri berubah, file .shp dan .dbf dengan catatan yang ditandai telah dihapus telah ada.

Dimulai dengan QGIS 2.10 pengemasan ulang dipanggil setiap kali layer disimpan setelah operasi yang berpotensi menambahkan flag yang dihapus ke catatan. Oleh karena itu file-file sekarang harus selalu dalam keadaan waras untuk diproses oleh aplikasi lain.

Matthias Kuhn
sumber
1

Ini terjadi pada saya di QGIS. Saya berhasil menyelesaikan masalah hanya dengan menghapus '_packed' dari nama file, seperti yang disarankan seseorang di bagian komentar di atas.

rhm
sumber
1

Mungkin ini adalah masalah lain dari file indeks .shx yang rusak. Jenis geometri harus disimpan dalam header .shp dan .shx. Jika tidak cocok, perangkat lunak akan menghasilkan kesalahan.

Sepertinya QGIS tidak terlalu ketat pada file indeks yang rusak, dan dapat membuatnya kembali Save As..., sementara ARCGIS bersikeras pada file indeks yang benar, dan membuat dbf (tabel atribut) yang dikemas untuk fitur yang dapat ditemukan melalui bagian yang benar dari file indeks, atau mungkin tanpa menggunakan indeks.

AndreJ
sumber
1

Kemunculan kembali fitur yang dihapus dan / atau perilaku aneh dari shapefile yang fitur-fiturnya telah dihapus di QGIS adalah bug yang diketahui, lihat laporan bug ini 11007 dan pertanyaan terkait ini - Poligon yang dihapus tampaknya kembali ke versi yang lebih lama . Serta ArcGIS mengalami masalah dengan shapefile seperti itu, ketika disimpan dalam QGIS sebagai file TAB MapInfo mereka kemudian menyebabkan plugin MapInfo RouteFinder mogok kecuali tabel pertama kali dikemas dalam MapInfo sebelum memuat RouteFinder. Menjalankan Universal Translator untuk mengonversi shapefile yang rusak ini di MapInfo gagal.

Seperti yang Anda temukan, masalah dapat diperbaiki dengan melakukan 'save as' di QGIS.

SpatialSuccess
sumber