Bozuk şekil dosyası düzeltiliyor mu?


10

ArcGIS Desktop 9.3 üzerinde çalıştığım bir şekil dosyası var bir şekilde bozuk olsun ve bana "Şekil sayısı tablo kayıt sayısı eşleşmiyor" hatası veriyor. Ne istediğim, dosyanın diğer revizyonları olmayan birçok düzenleme olduğu için bu şekil dosyasını kurtarmaktır.

Daha önce ogr2gui kullanarak bu hatadan kurtuldum ama araç şimdi çöküyor. Hatta komut satırı sürümü ogr2ogr ama yine de şans denedim . Bu komut dosyası, ArcScripts web sitesinden Shapefile Onarım Aracı da yardımcı olmadı.

Herhangi bir fikir? (şekil dosyaları kullanmayı bırakmam dışında)


İşte ogr2ogr çıktısı (cevaplardaki aa önerisine dayanarak): resim açıklamasını buraya girin


1
Öznitelik tablosu (.dbf dosyası) ayrı olarak düzenlendiğinden, şekil kayıtları ile öznitelik kayıtları arasında bir tutarsızlık yarattığı için neredeyse kesinlikle bozuldu. Şekil dosyasını "düzeltmeyi" başarsanız bile, doğru özniteliklerin şekillerle ilişkili olup olmadığını çok dikkatli bir şekilde iki kez kontrol ettiğinizden emin olun!
whuber

Hata mesajları çok fazla ortaya çıkıyor. Bu nokta ve parça sayıları, 2 ^ 30 ile 2 ^ 32 (işaretsiz) arasındaki değerleri gösterir ve .shp dosyasının kendisinde kayıt başlıklarının kapsamlı fiziksel üzerine yazılmasını önerir (çünkü bunlar geçerli sayımlar olmayacaktır). Bu nedenle, bu kayıtlardaki verilerin de üzerine yazılması büyük olasılıktır. Kısacası, şekil verileriniz muhtemelen en azından .shp dosyasının birçok bölümünde mevcut değildir ve bu nedenle yazılım tarafından kurtarılamaz. Yedeklemelerinizden geri yükleyin ve oradan başlayın.
whuber

1
@whuber. Teşekkürler. Elbette böyledir. Bu bozuk şekil dosyasından kurtarılan her dosya yedeklememden daha az kayıt içeriyor. O zamandan beri yedeklemeye geri döndüm.
Erick

Brad Nesoms tavsiye shapecheck.exe, bozuk şekil dosyası ilk kez düzeltildi! harika bir araç

Yanıtlar:


8

Bozuk özelliklerin kaybolmasıyla birlikte bir seçenek, ogr2ogr öğesini -skipfailures seçeneğiyle şekil dosyanızı başka bir şekil dosyasına dönüştürmek olabilir:

ogr2ogr -skipfailures fixed_shapefile.shp corrupted_shapefile.shp

daha fazla ayrıntı için PerryGeo blogundaki bu blog yayınına bakın:

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


Komutu çalıştırın (dışarıda bıraktığınız -f "ESRI Shapefile" dahil). Dosyada hata raporu var. [Ekran görüntüsü buraya gönderilemiyor]. Sanırım suçlu şekilleri ile ilgili. Biçim: HATA 1: Bozuk .shp dosyası: Şekil 2352, nPoints = 7, nEntitySize = 88.
Erick

-f seçeneğini güvenle kaldırabilirsiniz: shapefile varsayılan çıktı biçimidir. Şekil
dosyasının

Araştırma için dosya: Dosyayı memnuniyetle yönlendirirdim ama maalesef veriler telif hakkıyla korunuyor. Yine de teşekkürler.
Erick

@Erick, ekran görüntüsünü imgur.com'a koyarsanız buraya gönderebilirim (hala alakalı ise)
djq

5

Bunu kullanıyorum. Benim için her zaman bu sorunu çözdü.

shapecheck.exe


Brad ile hemfikirim, ShapeCheck sadece çalışıyor - bağımsız şekil dosyalarını düzeltiyor - gerektiğinde kesiliyor.
Mapperz

@Mapperz. Aracı, birkaç kesik ile çalıştırın. Bundan sonra şekil dosyasını gerçekten açabilir miyim! Ancak artık geri döndürmem gereken yedeklemeden daha az kayıt içeriyor. Yedeklemem olmasaydı böyle bir kurtarma olurdu. (Olasılık için arşivleme aracı) Teşekkürler.
Erick


4

Esri gelen resmi cevap bazı ipuçları var ama sizi işaret shp onarım programı birkaç kez kovulmak beni kurtardı.

Duyduğum ancak denediğimi söyleyemediğim birkaç tane daha:


Teşekkürler Simon. Ama benim asıl aksaklık dosya yeni başlayanlar için açılamıyor bu yüzden önerilerin çoğu işe yaramaz. Sadece bir ipucu önerdiğin her şeyi denedim. Hiçbir şey işe yaramadı.
Erick

2

Tamam, yukarıdaki iyi cevap yığınına eklemek için başka bir numara.

Bu biraz daha kaba bir kuvvettir, çoğu zaman yardımcı olur, bazen işe yaramaz ve muhtemelen sorunu çözmeye yönelik ilk adım olsa da (kendi başına bir çözümden ziyade, genellikle değil), yardımcı olabilir şekil dosyasını açabileceğiniz yere götürürsünüz. Çoğu durumda, şekil dosyası açıldıktan sonra ArcMap'te daha fazla manuel onarım yapmanız gerekecektir (bozuk özellikler ?, eksik özellikler? Yanlış hizalanmış özellikler? Vb.)

  1. Şekil dosyasını yeni bir boş klasöre kopyalayın. SHP, SHX ve DBF'yi yalnızca yanınıza alın. Diğer tüm dosyaları geride bırakın ve evet prj içerir.

  2. (Windows): SHX dosyasını sağ tıklayın ve dosya özelliklerini açmak için "Özellikler" i seçin.

  3. "Genel" sekmesinde bayta kadar bu SHX dosyasının EXACT dosya boyutuna bakın. "Diskteki boyut" özelliğine değil, "Boyut" özelliğine bakın.

  4. Bu dosya boyutunu bayt cinsinden alın ve 100 bayt (başlık) çıkarın. Kalan kısımdan 8'e bölün (her "kelimenin" boyutu). Sonuç, şekil dosyasının SHP bölümündeki şekil özelliklerinin sayısını verir.

  5. DBF'yi, DBF'yi düzenlemenize ve geri DBF olarak kaydetmenize izin verecek bazı yazılımlarda açın. DBF'deki satırların, 4. adımda hesapladığınız SHP'deki şekil özelliklerinin sayısıyla eşleşmesi için kayıt ekleyin veya kaldırın. (Excel'in daha eski bir sürümünü kullanıyorsanız, Satır # 1'in alan adlarını içerdiğini unutmayın, bu nedenle 1.000 kayıt için giderseniz, ilk veri satırından bu yana sayfada 1,001 satır olur Satır sayısını eşleştirmek için satırları silmeniz gerekiyorsa ve bu satırların içinde gerçek veriler varsa, bunları yeni bir DBF'ye kaydedin ve bunları geri okuyabilirsiniz. daha sonra, ArcMap'te her şeyin tekrar açıldığı noktaya geldikten sonra.

  6. SHP'deki özelliklerin sayısını DBF'deki satır sayısıyla eşleştirmek için yukarıdaki adımları kullandıktan sonra, şekil dosyasını ArcMap'te tekrar açmayı deneyin.


1

Ogrinfo ile .shp dosyalarınıza şekil sayısını saymayı deneyebilirsiniz (çalışacağından emin değilsiniz):

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

Şekil sayısını sayabiliyorsanız, .dbf dosyanızı tamamlamak için açık ofisle açabilirsiniz (veya fazladan satırları kaldırabilirsiniz )


Öneri için teşekkürler, ama tam olarak bir GDAL araçları profesyonel değilim. veya 'çok' sql okuryazarlığı. Sağladığınız parametrelerle çalışan aracı denedim, ancak araçla ilgili hata var. Msgstr "Veri kaynağı sayısı açılamıyor (*)".
Erick

komut satırını kopyalayıp yapıştırabilir misiniz?
simo

Yine de aynı hatayı yapabilirim. Ancak @capooti'nin çözümü bazı sonuçlar üretti / suçlu şekilleri tespit etti.
Erick

1

Yeniden bağlandığında CBS'nizin yeniden oluşturulacağı dizin dosyalarını (.idx ve .shx) silmede biraz şansım oldu.


Bunu başarılı olmadan denedim. Önerdiğiniz için teşekkürler.
Erick

0

Şekil dosyanız bir nokta katmanıysa ve XY alan değerlerine sahipse, bozuk şekil dosyası dbf'den başka bir katman oluşturmak için XY Olay Katmanı Yap aracını çalıştırabilirsiniz.


Bu bir yol (polylines) dosyası. Ancak bir puan senaryosu için ipucunu aklınızda tutacak. Teşekkürler.
Erick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.