Пояснення
OGR (частина GDAL) - це бібліотека, яка використовується QGIS для доступу до форм-файлів. Коли OGR видаляє функції, він не видаляє їх відразу, а просто позначає функції як видалені. Час від часу виконується команда під назвою перепакування , яка створює новий файл із суфіксом _repack та копіює всі функції, які не позначені як видалені у цьому новому файлі. Як тільки він закінчується, оригінальний .dbf замінюється на _repack.dbf. Потім це те ж саме робиться з файлом форм: створити новий (_packed.shp), скопіювати всі не видалені функції та врешті-решт замінити оригінал .shp.
Здається, десь у цьому процесі щось не вдалося (можливо, збій?).
У межах цього процесу змінюються ідентифікатори елементів, тому я гадаю, що SHP (геометрія), який ви маєте, і dbf (таблиця атрибутів) використовують різні ідентифікатори функцій для одних і тих же функцій, що призводить до дивної поведінки, яку ви відчуваєте. Здається, що один з двох файлів все ще містить (частину) видалених функцій, а інший - ні.
Як з цим боротися
Оновлення, листопад 2016: GDAL 2.2 поставляється з вбудованою функціональністю для автоматичного виклику перепакування кожного разу, коли файл записується на диск. Отже, перш ніж робити щось інше: перевірте версію GDAL у QGIS щодо діалогового вікна та оновіть свій GDAL (часто поставляється як частина QGIS) до останньої версії.
Ви, мабуть, не дуже багато можете зробити з цим, крім регулярних резервних копій, щоб не втратити більше даних, ніж ви можете обробити (ви все одно робите це, правда??). І якщо ви знайдете спосіб відтворити це (найкраще зі зразком набору даних), створіть звіт про помилку .
Якщо ви знову відчуєте цю проблему, ви також можете спробувати створити просторовий індекс на файлі форм. У цьому процесі QGIS знову зателефонує на перезавантаження на файл форм і може "відновити" shp / dbf. Але це лише неперевірена здогадка.
Як згадує @rhm та у коментарях, це також може допомогти перейменувати файл {xyz} _packed. {Ext} у {xyz}. {Ext} . Якщо упакований файл уже повністю записаний, і це не вдалося перейменувати, абсолютно точно зробити цей крок вручну. Однак якщо файл _packed не повністю записаний, можливо, вам не вистачає інформації про частини ваших функцій. Тому перш ніж спробувати це, зробіть резервні копії всіх залучених файлів.
Довідкова інформація про те, коли викликається переупаковка
Між QGIS 2.0 і 2.8 викликається повторне перезавантаження при кожному завантаженні шару (вихід QGIS, завантаження різних проектів ...). Якщо функцію було видалено або змінилась геометрія, присутні файли .shp та .dbf із записами, виданими як видалені .
Починаючи з QGIS 2.10, повторний перезапуск викликається кожен раз, коли шар зберігається після операції, яка може додати видалений прапор до записів. Тому файли завжди повинні знаходитись у належному стані, щоб оброблятись іншими програмами.