Düzenleme sırasında bozuk Shapefiles oluşturmak nasıl önlenir?


15

CBS teknisyenlerimden biri QGIS'deki bazı satırları şekil dosyası biçiminde dijitalleştiriyor. Nasıl yaptığını bilmiyorum (ve o da yapmıyor), ama bir şekilde şekil dosyası bozuldu. Rastgele çizgiler oluşturuyordu, ya da yarattığı bazı çizgiler ortadan kalkacaktı. ArcGIS'te ArcGIS'te nasıl göründüğünü görmek için girdim ve gördüm:

resim açıklamasını buraya girin

Bir şekil dosyası 'satırı' simgesi görmem gereken soru işareti simgesine dikkat edin. Açıkçası ArcCatalogue bu dosyayı okuyamıyor. Ayrıca, sonuna '_packed' eklenmiş olarak ikinci bir dbf dosyası oluşturulmuş gibi görünüyordu. Windows explorer kullanarak şekil dosyasına baktığımda, 'M3_PRE_SMU_lines_10Apr13_SMC.dbf' şekil dosyası için zaten bir .dbf olduğunu görüyorum, bu yüzden bu _packed şekil dosyasının nereden geldiğini bilmiyorum ve çevrimiçi bir şey bulamıyorum onunla konuşur.

Bu dosyayı ArcMap'e eklemeye çalıştım ve aşağıdaki hatayı aldım:

resim açıklamasını buraya girin

Hata oldukça açıklayıcıdır ... şekil sayısı kayıt sayısı ile eşleşmiyor. Bunun neden olduğunu bilmiyorum. QGIS'te bunun nasıl olduğunu açıklayan çevrimiçi bir şey yok gibi görünüyor, ancak birkaç onarım aracı görüyorum. Aslında bunu sadece QGIS'i açarak, katmanı ekleyerek ve katmanı sağ tıklayıp başka bir şekil dosyası olarak 'kaydederek' kendim tamir ettim. Yani, bir iş bulmuştum, ama bunun ilk etapta gerçekleşmesini durduracak bir çözüm bulmayı umuyorum. Teşekkürler, Mike


1
QGIS'i yıllardır kullanıyorum ve bu sorunu daha önce görmedim. Başka bir .dbf dosyasının "büyülü" görünümü, Shapefile dosyasının QGIS dışında değiştirildiğini gösterir. Hatayı yalnızca QGIS kullanarak yeniden oluşturabiliyorsanız, lütfen bir hata raporu gönderin. Bu çok önemli olurdu!
underdark

Sorunu hiç şans olmadan çoğaltmaya çalışıyorum. Fark ettiğim bir şey, ArcGIS'ten farklı olarak, QGIS'de düzenlerken bir şema kilidi mesajı almıyorum (yani, birinin şekil dosyasında bir şema kilidi varsa ve aynı şeyi düzenlemeye başlarsanız, ArcGIS kaydederken bir hata atar QGIS yapmaz) Şema kilitli bir şekil dosyasını kaydettiğinizde garip tasarruf ettiğini düşünüyorum. Bunun% 100 olduğundan emin değilim, ama kayda değer bir şey.
Mike

Ayrıca şekil dosyalarını düzenlerken bu hatayı kırptım. Etrafımdaki çalışma sadece ArcMap'taki düzenlememi yapmaktı. Açıkçası bu gerçek bir çözüm değil - ama - bu tür bir hatayı yaşamakta yalnız değilsiniz.
Kevin

..._ SMC.dbf dosyasını ..._ SMC.dbf.backup olarak ve ..._ SMC_packed.dbf'yi ..._ SMC.dbf olarak yeniden adlandırmayı denediniz mi?
Matthias Kuhn

2
merhaba Dufur ile aynı problem. Yalnızca q gis ortamında oluşturulan dosyalar. Şekli düzenlediğimde ve sonunda kaydetmeye ve ardından düzenlemeyi durdurmaya başladığımda olur, böylece çizgiler kaybolur ve öznitelikler tablosu herhangi bir veriye sahip değildir. qgis üzerindeki şekli tekrar yüklemeye çalışırsanız boş görünüyor. Klasörde dosya es. mario.shx bir mario_packed.shp olmuştu. Adından paketlenmiş kelimeyi silmenin (geri mario.shx olduğunu) şekli şimdi yüklendi ve çalışıyor gibi görünüyor. Ne kadar? bilmiyorum sadece
bununla

Yanıtlar:


16

açıklama

OGR ( GDAL'ın bir parçası), QGIS tarafından şekil dosyalarına erişmek için kullanılan kitaplıktır. OGR özellikleri sildiğinde hemen silmez, sadece özellikleri silindi olarak işaretler. Bir süre sonra, _repack sonekiyle yeni bir dosya oluşturan ve bu yeni dosyaya silinmiş olarak işaretlenmemiş tüm özellikleri kopyalayan repack adlı bir komut yürütülür. Tamamlandığında, orijinal .dbf _repack.dbf ile değiştirilir. Daha sonra şekil dosyasına aynı şeyi yapar: yeni bir tane oluşturun (_packed.shp), silinmemiş tüm özellikleri kopyalayın ve sonunda orijinal .shp'yi değiştirin.

Bu süreçte bir yerde görünüyor, bir şey başarısız oldu (belki bir çökme?).

Bu süreçte, özellik kimlikleri değişir, bu yüzden sanırım, sahip olduğunuz shp (geometri) ve dbf (öznitelik tablosu), aynı özellikler için farklı özellik kimlikleri kullanır, bu da yaşadığınız garip davranışa yol açar. Öyle görünüyor ki, iki dosyadan biri silinmiş özellikleri içermekte (diğeri) diğeri içermiyor.

Bununla nasıl başa çıkılır?

Güncelleme, Kasım 2016: GDAL 2.2, dosya diske her yazıldığında otomatik olarak yeniden çağırma işlevini çağıracak yerleşik işlevsellik ile birlikte gönderilir. Başka bir şey yapmadan önce: QGIS hakkında iletişim kutusundaki GDAL sürümünü kontrol edin ve GDAL (genellikle QGIS'in bir parçası olarak gönderilir) sürümünüzü en son sürüme güncelleyin.

Muhtemelen işleyebileceğinizden daha fazla veri kaybetmemek için düzenli yedeklemeler yapmak dışında yapabileceğiniz çok şey yoktur (bunu zaten yapıyorsunuz, değil mi? 😉). Ve bunu çoğaltmanın bir yolunu bulursanız (en iyi örnek veri kümesiyle) bir hata raporu oluşturun .

Bu sorunla yeniden karşılaşırsanız, şekil dosyasında uzamsal bir dizin oluşturmayı da deneyebilirsiniz . Bu işlemde, QGIS şekil dosyasında yeniden paketlemeyi çağırır ve shp / dbf'yi "onarabilir". Ama bu sadece doğrulanmamış bir tahmindir.

@Rhm tarafından ve yorumlarda belirtildiği gibi , {xyz} _packed. {Ext} dosyasını {xyz}. { Ext} olarak yeniden adlandırmak da yardımcı olabilir . Paketlenmiş dosya zaten tamamen yazılmışsa ve sadece başarısız olan yeniden adlandıysa, bu adımı manuel olarak yapmak kesinlikle geçerlidir. Ancak _packed dosyası tam olarak yazılmadıysa, özelliklerinizin bazı bölümlerindeki bilgiler eksik olabilir. Bu yüzden denemeden önce ilgili tüm dosyaların yedek kopyalarını alın .

Yeniden paketlemenin ne zaman çağrıldığı hakkında arka plan bilgileri

Arasında QGIS 2.0 ve 2.8 kat yüklenmemiş her repack (çıkış QGIS, yük farklı proje ...) olarak anılmıştır. Bir özellik silinmişse veya bir geometri değiştirilmişse, silinen olarak işaretlenmiş kayıtlara sahip .shp ve .dbf dosyaları bulunmaktadır .

Silinen bayrağı kayıtlara ekleme potansiyeli olan bir işlemden sonra katman kaydedildiğinde QGIS 2.10 yeniden paketleme ile başlanır . Bu nedenle, dosyalar artık diğer uygulamalar tarafından işlenebilmek için daima akılcı durumda olmalıdır.


1

Bu QGIS'de başıma geldi. Birisi yukarıdaki yorumlar bölümünde önerildiği gibi, dosya adından '_packed' silerek sorunu çözmeyi başardım.


1

Belki de bu, bozuk bir .shx dizin dosyasının başka bir sorunudur. Geometri türü .shp ve .shx üstbilgisinde saklanmalıdır. Eşleşmezlerse, yazılım bir hata oluşturur.

Görünüşe göre QGIS bozuk dizin dosyalarında çok katı değildir ve Save As...ARCGIS doğru bir dizin dosyasında ısrar ederken, ile yeniden oluşturabilir ve doğru bölümleri aracılığıyla bulunabilen özellikler için paketlenmiş bir dbf (Öznitelik tablosu) oluşturur. dizin dosyası veya dizin kullanmadan.


1

QGIS'te silinen özelliklerin ve / veya özelliklerin silindiği garip davranışların yeniden görünmesi bilinen bir hatadır, bu hata raporu 11007'ye bakın ve bu ilgili soru - Silinen çokgenler eski sürümlere geri dönüyor gibi görünüyor . ArcGIS'in bu şekil dosyaları ile sorun yaşamanın yanı sıra, QGIS'te MapInfo TAB dosyaları olarak kaydedildiğinde, RouteFinder yüklemeden önce tablolar ilk olarak MapInfo içinde paketlenmedikçe MapInfo RouteFinder eklentisinin çökmesine neden olurlar. MapInfo'da bu bozuk şekil dosyalarını dönüştürmek için Universal Translator'ı çalıştırmak başarısız olur.

Bulduğunuz gibi, sorun QGIS'de 'farklı kaydet' yaparak düzeltilebilir.

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.