Giải trình
OGR (một phần của GDAL) là thư viện được sử dụng bởi QGIS để truy cập các shapefiles. Khi OGR xóa các tính năng, nó không xóa chúng ngay lập tức mà chỉ đánh dấu các tính năng là đã xóa. Thỉnh thoảng , một lệnh gọi là repack được thực thi, nó sẽ tạo ra một tệp mới với hậu tố _repack và sao chép tất cả các tính năng không được đánh dấu là đã xóa vào tệp mới này. Khi nó kết thúc, .dbf ban đầu được thay thế bằng _repack.dbf. Sau đó, nó thực hiện điều tương tự với shapefile: tạo một cái mới (_packed.shp), sao chép tất cả các tính năng không bị xóa và cuối cùng thay thế .shp ban đầu.
Có vẻ như ở đâu đó trong quá trình này, một cái gì đó thất bại (có thể là một vụ tai nạn?).
Trong quá trình này, các id tính năng thay đổi, vì vậy tôi đoán rằng shp (hình học) mà bạn có và dbf (bảng thuộc tính) sử dụng các id tính năng khác nhau cho cùng một tính năng, điều này dẫn đến hành vi lạ mà bạn gặp phải. Dường như, một trong hai tệp vẫn chứa (một phần) các tính năng đã bị xóa trong khi tệp kia thì không.
Làm thế nào để đối phó với điều này
Cập nhật, tháng 11 năm 2016: GDAL 2.2 có chức năng dựng sẵn để gọi đóng gói lại tự động bất cứ khi nào tệp được ghi vào đĩa. Vì vậy, trước khi làm bất cứ điều gì khác: hãy kiểm tra phiên bản GDAL trong hộp thoại QGIS about và cập nhật bản phát hành GDAL (thường được vận chuyển như một phần của QGIS) lên phiên bản gần đây.
Có lẽ bạn không thể làm được gì nhiều ngoài việc tạo các bản sao lưu thông thường để không mất nhiều dữ liệu hơn mức bạn có thể xử lý (dù sao bạn cũng đang làm điều đó, phải không?). Và nếu bạn tìm được cách tái tạo điều này (tốt nhất với bộ dữ liệu mẫu), hãy tạo một báo cáo lỗi .
Nếu bạn gặp lại vấn đề này, bạn cũng có thể thử tạo một chỉ mục không gian trên shapefile. Trong quá trình này, QGIS sẽ gọi repack một lần nữa trên shapefile và có thể "sửa chữa" shp / dbf. Nhưng đây chỉ là một phỏng đoán chưa được xác minh.
Như được đề cập bởi @rhm và trong các bình luận, nó cũng có thể giúp đổi tên tệp {xyz} _packed. {Ext} thành {xyz}. {Ext} . Nếu tệp đã đóng gói đã được ghi hoàn toàn và đó chỉ là việc đổi tên không thành công, việc thực hiện bước này theo cách thủ công là hoàn toàn hợp lệ. Tuy nhiên, nếu tệp _packed chưa được ghi hoàn toàn, bạn có thể thiếu thông tin từ các phần của tính năng. Vì vậy, trước khi bạn thử điều này, hãy tạo các bản sao lưu của tất cả các tệp liên quan.
Thông tin cơ bản về thời điểm đóng gói lại được gọi
Giữa QGIS 2.0 và 2.8 repack đã được gọi bất cứ khi nào lớp được tải (thoát khỏi QGIS, tải dự án khác nhau ...). Nếu một tính năng đã bị xóa hoặc hình học thay đổi, các tệp .shp và .dbf với các bản ghi được đánh dấu là đã xóa đã có mặt.
Bắt đầu với việc đóng gói lại QGIS 2.10 được gọi bất cứ khi nào lớp được lưu sau một thao tác có khả năng thêm cờ đã xóa vào các bản ghi. Do đó, các tệp phải luôn ở trạng thái lành mạnh để được xử lý bởi các ứng dụng khác.