Explication
OGR (partie de GDAL) est la bibliothèque utilisée par QGIS pour accéder aux fichiers de formes. Lorsque OGR supprime des fonctionnalités, il ne les supprime pas immédiatement, mais marque simplement les fonctionnalités comme supprimées. De temps en temps, une commande appelée repack est exécutée, ce qui crée un nouveau fichier avec le suffixe _repack et copie toutes les fonctionnalités qui ne sont pas marquées comme supprimées dans ce nouveau fichier. Une fois terminé, le .dbf d'origine est remplacé par le _repack.dbf. Il fait ensuite la même chose pour le fichier de formes: en créer une nouvelle (_packed.shp), copier toutes les fonctionnalités non supprimées et éventuellement remplacer le .shp d'origine.
Il semble quelque part dans ce processus, quelque chose a échoué (peut-être un crash?).
Dans ce processus, les identifiants des fonctionnalités changent, donc je suppose que le shp (géométrie) que vous avez et le dbf (table d'attributs) utilisent des identifiants de fonctionnalités différents pour les mêmes fonctionnalités, ce qui conduit au comportement étrange que vous rencontrez. Il semble que l'un des deux fichiers contienne (une partie de) les fonctionnalités supprimées alors que l'autre n'en contient pas.
Comment y faire face
Mise à jour, novembre 2016: GDAL 2.2 est livré avec une fonctionnalité intégrée pour appeler automatiquement le reconditionnement chaque fois que le fichier est écrit sur le disque. Donc, avant de faire quoi que ce soit d'autre: vérifiez la version GDAL dans la boîte de dialogue QGIS à propos et mettez à jour votre version GDAL (souvent livrée avec QGIS) vers une version récente.
Il n'y a probablement pas grand-chose à faire à part faire des sauvegardes régulières afin de ne pas perdre plus de données que vous ne pouvez en gérer (vous le faites quand même, n'est-ce pas? Right). Et si vous trouvez un moyen de reproduire cela (mieux avec un exemple de jeu de données), créez un rapport de bogue .
Si vous rencontrez à nouveau ce problème, vous pouvez également essayer de créer un index spatial sur le fichier de formes. Dans ce processus, QGIS appellera à nouveau repack sur le fichier de formes et pourrait "réparer" le shp / dbf. Mais ce n'est qu'une supposition non vérifiée.
Comme mentionné par @rhm et dans les commentaires, il peut également être utile de renommer le fichier {xyz} _packed. {Ext} en {xyz}. {Ext} . Si le fichier compressé a déjà été complètement écrit et que ce n'est que le changement de nom qui a échoué, il est absolument valide de faire cette étape manuellement. Cependant, si le fichier _packed n'a pas été complètement écrit, il se peut que des informations manquent dans certaines parties de vos fonctionnalités. Donc, avant d'essayer, faites des copies de sauvegarde de tous les fichiers impliqués.
Informations générales sur l'appel du reconditionnement
Entre QGIS 2.0 et 2.8, le reconditionnement a été appelé chaque fois que la couche était déchargée (quitter QGIS, charger un projet différent ...). Si une entité a été supprimée ou une géométrie modifiée, des fichiers .shp et .dbf avec des enregistrements marqués comme supprimés étaient présents.
À partir de QGIS 2.10, le reconditionnement est appelé chaque fois que la couche est enregistrée après une opération qui a le potentiel d'ajouter l'indicateur supprimé aux enregistrements. Par conséquent, les fichiers doivent désormais toujours être dans un état sain pour être traités par d'autres applications.