Mam plik kształtu, nad którym pracowałem w ArcGIS Desktop 9.3, został w jakiś sposób uszkodzony i pojawia się błąd: „Liczba kształtów nie pasuje do liczby rekordów tabeli”. Chciałbym odzyskać ten plik kształtu, ponieważ zawiera wiele zmian, których nie mają inne wersje pliku.
Wcześniej odzyskałem ten błąd za pomocą ogr2gui, ale teraz narzędzie po prostu ulega awarii. Próbowałem nawet wersji komendy ogr2ogr, ale nadal nie mam szczęścia. Ten skrypt, narzędzie do naprawy Shapefile ze strony ArcScripts, również nie pomógł.
Jakieś pomysły? (z wyjątkiem tego, że przestaję używać plików kształtów)
Oto wynik z ogr2ogr (na podstawie sugestii w odpowiedziach):
Odpowiedzi:
Opcją, z utratą uszkodzonych funkcji, może być konwersja pliku shapefile na inny plik shapefile przez ogr2ogr, z opcją -skipfailures:
w celu uzyskania dalszych szczegółów zobacz ten post na blogu z bloga PerryGeo:
http://www.perrygeo.net/wordpress/?p=132
źródło
Używam tego. Zawsze rozwiązało to dla mnie ten problem.
shapecheck.exe
źródło
Oficjalne odpowiedzi z Esri ma szereg wskazówek, ale zwraca cię do narzędzia do naprawy SHP , który uratował mnie wyrzucenie kilka razy.
Kilka innych, o których słyszałem, ale nie mogę powiedzieć, że próbowałem:
źródło
Ok, oto kolejna sztuczka, którą można dodać do stosu dobrych odpowiedzi powyżej.
Ta jest nieco bardziej brutalna, przez większość czasu pomaga, czasem nie, i chociaż jest to prawdopodobnie tylko pierwszy krok w kierunku rozwiązania problemu (zamiast rozwiązania samego siebie, co często nie jest), może pomóc doprowadzi cię do miejsca, w którym możesz otworzyć plik kształtu. W większości przypadków po otwarciu pliku shapefile nadal musisz wykonać więcej ręcznych napraw w ArcMap (uszkodzone funkcje? Brakujące atrybuty? Źle wyosiowane atrybuty? Itp.)
Skopiuj plik kształtu do nowego pustego folderu. Zabierz ze sobą tylko SHP, SHX i DBF. Pozostaw wszystkie pozostałe pliki, i tak, w tym prj.
(Windows): kliknij prawym przyciskiem myszy plik SHX i wybierz „Właściwości”, aby otworzyć właściwości pliku.
Na karcie „Ogólne” spójrz na DOKŁADNY rozmiar tego pliku SHX aż do bajtu. Sprawdź właściwość „Rozmiar”, a nie właściwość „Rozmiar na dysku”.
Weź ten rozmiar pliku w bajtach i odejmij 100 bajtów (nagłówek). Z pozostałej części podziel przez 8 (wielkość każdego „słowa”). Wynik daje liczbę funkcji kształtu wewnątrz części SHP pliku kształtu.
Otwórz DBF w jakimś oprogramowaniu, które pozwoli ci edytować DBF i zapisać go jako DBF. Dodaj lub usuń rekordy, aby wiersze w DBF były zgodne z liczbą elementów kształtu w SHP obliczoną w kroku 4. (Jeśli używasz starszej wersji programu Excel, pamiętaj, że wiersz nr 1 zawiera nazwy pól, więc jeśli wybierzesz 1000 rekordów, w pierwszym arkuszu danych będzie to 1 001 wierszy jest wiersz nr 2). Jeśli aby dopasować liczbę wierszy, musisz usunąć wiersze, a te wiersze zawierały prawdziwe dane, które musisz zachować, po prostu zapisz je w nowym DBF i możesz je ponownie odczytać później, gdy dojdziesz do punktu, w którym wszystko otwiera się ponownie w ArcMap.
Po wykonaniu powyższych kroków, aby dopasować liczbę funkcji w SHP do liczby wierszy w DBF, spróbuj ponownie otworzyć plik kształtu w ArcMap.
źródło
Możesz spróbować policzyć liczbę kształtów w plikach .shp za pomocą ogrinfo (nie jestem pewien, czy to zadziała):
Jeśli jesteś w stanie policzyć liczbę kształtów, możesz następnie otworzyć plik .dbf z otwartym biurem, aby go ukończyć (lub usunąć dodatkowe wiersze)
źródło
Miałem trochę szczęścia, usuwając pliki indeksu (.idx i .shx), które GIS zregeneruje po ponownym połączeniu.
źródło
Jeśli plik kształtów był warstwą punktową i miał wartości pól XY, można uruchomić narzędzie Utwórz warstwę zdarzeń XY, aby utworzyć kolejną warstwę z uszkodzonego pliku kształtu dbf.
źródło