Spiegazione
OGR (parte di GDAL) è la libreria utilizzata da QGIS per accedere agli shapefile. Quando OGR elimina le funzionalità, non le elimina immediatamente, ma le contrassegna semplicemente come eliminate. Di tanto in tanto, viene eseguito un comando chiamato repack , che crea un nuovo file con il suffisso _repack e copia tutte le funzionalità che non sono contrassegnate come eliminate in questo nuovo file. Al termine, l'originale .dbf viene sostituito con _repack.dbf. Quindi fa la stessa cosa con lo shapefile: crearne uno nuovo (_packed.shp), copiare tutte le funzionalità non cancellate e infine sostituire l'originale .shp.
Sembra da qualche parte in questo processo, qualcosa non è riuscito (forse un incidente?).
All'interno di questo processo, gli ID delle caratteristiche cambiano, quindi immagino che shp (geometria) che hai e dbf (tabella degli attributi) utilizzino ID di caratteristiche diverse per le stesse caratteristiche, il che porta allo strano comportamento che si verifica. Sembra che uno dei due file contenga ancora (parte di) le funzionalità eliminate mentre l'altro no.
Come gestirlo
Aggiornamento, novembre 2016: GDAL 2.2 viene fornito con funzionalità integrata per chiamare il repack automaticamente ogni volta che il file viene scritto sul disco. Quindi, prima di fare qualsiasi altra cosa: controlla la versione GDAL nella finestra di dialogo QGIS sulla finestra di dialogo e aggiorna la tua versione GDAL (spesso fornita come parte di QGIS) a una versione recente.
Probabilmente non c'è molto che puoi fare al riguardo oltre a fare backup regolari per non perdere più dati di quelli che puoi gestire (lo stai facendo comunque, giusto? 😉). E se trovi un modo per riprodurre questo (meglio con un set di dati di esempio) crea una segnalazione di bug .
Se riscontri nuovamente questo problema, puoi anche provare a creare un indice spaziale sul file di forma. In questo processo, QGIS chiamerà nuovamente repack sul file di forma e potrebbe "riparare" shp / dbf. Ma questa è solo un'ipotesi non verificata.
Come menzionato da @rhm e nei commenti, può anche aiutare a rinominare il file {xyz} _packed. {Ext} in {xyz}. {Ext} . Se il file compresso è già stato completamente scritto ed è stata solo la ridenominazione che non è riuscita, è assolutamente valido eseguire questo passaggio manualmente. Tuttavia, se il file _packed non è stato completamente scritto, è possibile che manchino informazioni da parti delle funzioni. Quindi, prima di provare, crea copie di backup di tutti i file coinvolti.
Informazioni di base su quando viene chiamato il repack
Tra QGIS 2.0 e 2.8 è stato chiamato il repack ogni volta che il layer è stato scaricato (uscire da QGIS, caricare un altro progetto ...). Se una funzione è stata eliminata o una geometria modificata, sono stati presenti file .shp e .dbf con record contrassegnati come eliminati .
A partire da QGIS 2.10 il repack viene chiamato ogni volta che il layer viene salvato dopo un'operazione che ha il potenziale per aggiungere il flag eliminato ai record. Pertanto i file dovrebbero ora essere sempre in uno stato sano per essere elaborati da altre applicazioni.