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:
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:
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
Jawaban:
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.
sumber
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.
sumber
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.sumber
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.
sumber