Memperbaiki shapefile yang rusak?


10

Saya memiliki shapefile yang sedang saya kerjakan di ArcGIS Desktop 9.3 entah bagaimana rusak dan itu memberi saya kesalahan "Jumlah bentuk tidak cocok dengan jumlah catatan tabel.". Apa yang saya inginkan adalah memulihkan shapefile ini karena memiliki banyak pengeditan yang tidak dimiliki oleh revisi file lainnya.

Sebelumnya saya pulih dari kesalahan ini menggunakan ogr2gui tetapi alat sekarang hanya crash. Saya bahkan sudah mencoba versi baris perintah ogr2ogr tetapi masih belum berhasil. Skrip ini, Alat Perbaikan Shapefile dari situs web ArcScripts juga tidak membantu.

Ada ide? (kecuali saya berhenti menggunakan shapefile)


Berikut ini adalah output dari ogr2ogr (berdasarkan saran dalam jawaban): masukkan deskripsi gambar di sini


1
Itu hampir pasti menjadi rusak karena tabel atributnya (file .dbf) sedang diedit secara terpisah, menciptakan ketidakkonsistenan antara catatan bentuk dan catatan atribut. Bahkan jika Anda berhasil "memperbaiki" shapefile, pastikan untuk melakukan pemeriksaan ulang yang sangat hati-hati bahwa atribut yang benar terkait dengan bentuk!
whuber

Pesan-pesan kesalahan mengungkapkan banyak. Jumlah titik dan bagian tersebut menunjukkan nilai antara 2 ^ 30 dan 2 ^ 32 (tidak ditandatangani), sangat menyarankan penimpaan fisik yang luas dari header catatan dalam file .shp itu sendiri (karena mereka tidak akan menjadi jumlah yang valid, selamanya). Karena itu, sangat mungkin data dalam catatan tersebut juga telah ditimpa. Singkatnya, data bentuk Anda mungkin tidak ada lagi, setidaknya di banyak bagian file .shp, dan karenanya tidak dapat dipulihkan oleh perangkat lunak. Pulihkan dari cadangan Anda dan mulai dari sana.
whuber

1
@whuber. Terima kasih. Tentu ini masalahnya. Setiap file yang dipulihkan dari shapefile yang rusak ini berisi lebih sedikit catatan daripada cadangan saya. Sejak itu saya kembali ke cadangan.
Erick

Rekomendasi Brad Nesoms shapecheck.exe, perbaiki file bentuk rusak saya pertama kali! alat hebat

Jawaban:


8

Sebuah opsi, dengan kehilangan fitur yang rusak, bisa menggunakan ogr2ogr untuk mengubah shapefile Anda ke shapefile lain, dengan opsi -skipfailures:

ogr2ogr -skipfailures fixed_shapefile.shp corrupted_shapefile.shp

untuk detail lebih lanjut lihat posting blog ini dari blog PerryGeo:

http://www.perrygeo.net/wordpress/?p=132


Jalankan perintah (termasuk -f "ESRI Shapefile" yang Anda tinggalkan). Mendapat laporan kesalahan pada file. [Tidak dapat memposting tangkapan layar di sini]. Ini ada hubungannya dengan bentuk pelakunya kurasa. Formatnya adalah: ERROR 1: File .shp rusak: Shape 2352, nPoints = 7, nEntitySize = 88.
Erick

Anda dapat dengan aman menghapus opsi -f: shapefile adalah format output default. Akan menarik, untuk penelitian lebih lanjut, jika Anda bisa melampirkan salinan shapefile
capooti

File untuk penelitian: Saya dengan senang hati akan meneruskan file tersebut tetapi sayangnya datanya dilindungi hak cipta. Bagaimanapun, terima kasih.
Erick

@Erick, jika Anda meletakkan tangkapan layar di imgur.com, saya dapat mempostingnya di sini (jika masih relevan)
djq

5

Saya menggunakan yang ini. Itu selalu memperbaiki masalah itu untuk saya.

shapecheck.exe


Saya Setuju dengan Brad, ShapeCheck hanya berfungsi - perbaikan mandiri shapefile - memotong bila diperlukan.
Mapperz

@Mapperz. Jalankan alat, dengan beberapa pemotongan. Memang bisa membuka shapefile sesudahnya! Tetapi sekarang berisi lebih sedikit catatan dari cadangan yang harus saya kembalikan. Jika saya tidak memiliki cadangan pemulihan seperti ini akan menjadi itu. (Alat pengarsipan untuk kemungkinan) Terima kasih.
Erick


4

The Jawaban resmi dari Esri memiliki sejumlah tips tapi menunjuk Anda ke utilitas perbaikan shp yang telah menyelamatkan saya dipecat beberapa kali.

Beberapa yang lain yang pernah saya dengar tetapi tidak bisa mengatakan saya sudah mencoba:


Terima kasih Simon. Tapi halangan utama saya adalah saya tidak bisa membuka file untuk pemula sehingga sebagian besar saran tidak akan berfungsi. Baru saja mencoba semuanya pada Tip One yang Anda sarankan. Tidak ada yang berhasil.
Erick

2

Ok, berikut trik lain untuk menambah tumpukan jawaban bagus di atas.

Yang ini sedikit lebih kasar, sebagian besar membantu, kadang tidak, dan meskipun itu mungkin hanya langkah pertama untuk memperbaiki masalah (daripada solusi untuk dirinya sendiri, yang sering tidak), ini dapat membantu membawa Anda ke tempat Anda dapat membuka shapefile. Sebagian besar kasus Anda masih perlu melakukan lebih banyak perbaikan manual di ArcMap setelah shapefile terbuka (fitur rusak ?, atribut hilang? Atribut tidak selaras? Dll.)

  1. Salin shapefile ke folder kosong baru. Hanya membawa SHP, SHX, dan DBF dengan Anda. Tinggalkan semua file lain di belakang, dan ya itu termasuk prj.

  2. (Windows): klik kanan file SHX dan pilih "Properties" untuk membuka properti file.

  3. Pada tab "General" lihat ukuran file EXACT dari file SHX ini hingga ke byte. Lihatlah properti "Ukuran", dan bukan properti "Ukuran pada disk".

  4. Ambil ukuran file itu dalam byte dan kurangi 100 byte (header). Sisanya, bagi dengan 8 (ukuran setiap "kata"). Hasilnya memberi Anda jumlah fitur bentuk di dalam bagian SHP dari shapefile.

  5. Buka DBF di beberapa perangkat lunak yang akan memungkinkan Anda untuk mengedit DBF dan menyimpannya kembali sebagai DBF. Menambahkan atau menghapus catatan untuk membuat baris di DBF cocok dengan jumlah fitur bentuk di SHP yang Anda hitung di langkah # 4. (Jika Anda menggunakan versi Excel yang lebih lama, ingatlah bahwa Baris # 1 berisi nama bidang, jadi jika Anda menggunakan 1.000 catatan, itu akan berakhir menjadi 1.001 baris dalam lembar sejak baris data pertama adalah Baris # 2. nanti, setelah Anda sampai pada titik di mana semuanya terbuka lagi di ArcMap.

  6. Setelah Anda menggunakan langkah-langkah di atas untuk mencocokkan jumlah fitur di SHP dengan jumlah baris dalam DBF, cobalah untuk membuka shapefile lagi di ArcMap.


1

Anda dapat mencoba menghitung jumlah bentuk ke file .shp Anda dengan ogrinfo (tidak yakin itu akan berfungsi):

 ogrinfo -sql 'select count(*) from myshp' myshp.shp

Jika Anda dapat menghitung jumlah bentuk, Anda dapat membuka file .dbf Anda dengan kantor terbuka untuk melengkapinya (atau menghapus baris tambahan)


Terima kasih atas sarannya, tapi saya bukan alat pro GDAL. atau 'sangat' sql melek. Mencoba menjalankan alat dengan parameter yang Anda berikan tetapi mendapat kesalahan terkait alat. + Msgstr "Tidak dapat membuka jumlah sumber data (*)".
Erick

dapatkah Anda menyalin / menempelkan baris perintah?
simo

Saya bisa tetapi masih kesalahan yang sama. Tetapi solusi @capooti tampaknya telah menghasilkan beberapa hasil / bentuk pelakunya yang teridentifikasi.
Erick

1

Saya beruntung menghapus file indeks (.idx dan .shx), yang akan dibuat kembali SIG Anda ketika terhubung kembali.


Mencoba ini tanpa hasil. Terima kasih telah menyarankan.
Erick

0

Jika shapefile Anda adalah layer titik dan memiliki nilai bidang XY, Anda bisa menjalankan alat Make XY Event Layer untuk membuat layer lain dari dbf shapefile rusak.


File jalan (polylines). Tetapi akan mengingat petunjuk Anda untuk skenario poin. Terima kasih.
Erick
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.