Wyjaśnienie
OGR (część GDAL) to biblioteka używana przez QGIS do uzyskiwania dostępu do plików kształtów. Kiedy OGR usuwa funkcje, nie usuwa ich natychmiast, ale jedynie zaznacza funkcje jako usunięte. Raz na jakiś czas wykonywane jest polecenie o nazwie przepakuj , które tworzy nowy plik z sufiksem _repack i kopiuje wszystkie funkcje, które nie są oznaczone jako usunięte do tego nowego pliku. Po zakończeniu oryginalny plik .dbf zostanie zastąpiony plikiem _repack.dbf. Następnie robi to samo z plikiem shapefile: utwórz nowy (_packed.shp), skopiuj wszystkie nieusunięte funkcje i ostatecznie zastąp oryginalny plik .shp.
Wydaje się, że gdzieś w tym procesie coś się nie udało (może awaria?).
W ramach tego procesu identyfikatory funkcji zmieniają się, więc myślę, że shp (geometria), którą masz i dbf (tabela atrybutów) używają różnych identyfikatorów funkcji dla tych samych funkcji, co prowadzi do dziwnego zachowania, którego doświadczasz. Wygląda na to, że jeden z dwóch plików nadal zawiera (część) usuniętych funkcji, podczas gdy drugi nie.
Jak sobie z tym poradzić
Aktualizacja, listopad 2016: GDAL 2.2 zawiera wbudowaną funkcję automatycznego wywoływania przepakowania za każdym razem, gdy plik jest zapisywany na dysku. Więc zanim zrobisz cokolwiek innego: sprawdź wersję GDAL w QGIS o oknie dialogowym i zaktualizuj wersję GDAL (często dostarczaną jako część QGIS) do najnowszej wersji.
Prawdopodobnie niewiele można na to poradzić oprócz regularnego tworzenia kopii zapasowych, aby nie stracić więcej danych niż jest to w stanie obsłużyć (i tak to robisz, prawda?). A jeśli znajdziesz sposób na odtworzenie tego (najlepiej z przykładowym zestawem danych), stwórz raport o błędzie .
Jeśli ten problem wystąpi ponownie, możesz spróbować utworzyć indeks przestrzenny na pliku kształtu. W tym procesie QGIS ponownie wywoła przepakowanie pliku shapefile i może „naprawić” shp / dbf. Ale to tylko niezweryfikowane przypuszczenie.
Jak wspomniano w @rhm iw komentarzach, może również pomóc zmienić nazwę pliku {xyz} _packed. {Ext} na {xyz}. {Ext} . Jeśli spakowany plik został już w całości zapisany, a zmiana nazwy nie powiodła się, absolutnie poprawne jest wykonanie tego kroku ręcznie. Jeśli jednak _pakowany plik nie został w pełni zapisany, być może brakuje informacji w niektórych elementach funkcji. Więc zanim spróbujesz, wykonaj kopie zapasowe wszystkich zaangażowanych plików.
Podstawowe informacje o tym, kiedy wywoływane jest przepakowanie
Pomiędzy QGIS 2.0 i 2.8 wywoływano przepakowanie za każdym razem, gdy warstwa została rozładowana (wyjdź z QGIS, załaduj inny projekt ...). Jeśli element został usunięty lub zmieniono geometrię, obecne były pliki .shp i .dbf z rekordami oznaczonymi jako usunięte .
Począwszy od QGIS 2.10 przepakowanie jest wywoływane za każdym razem, gdy warstwa jest zapisywana po operacji, która może dodać usuniętą flagę do rekordów. Dlatego pliki powinny być teraz zawsze w rozsądnym stanie, aby mogły być przetwarzane przez inne aplikacje.