Explicação
OGR (parte do GDAL) é a biblioteca usada pelo QGIS para acessar os shapefiles. Quando o OGR exclui recursos, ele não os exclui imediatamente, mas apenas marca os recursos como excluídos. De vez em quando, um comando chamado repack é executado, o que cria um novo arquivo com o sufixo _repack e copia todos os recursos que não estão marcados como excluídos para esse novo arquivo. Depois de concluído, o .dbf original é substituído pelo _repack.dbf. Ele faz o mesmo com o shapefile: crie um novo (_packed.shp), copie todos os recursos não excluídos e, eventualmente, substitua o .shp original.
Parece que em algum lugar deste processo, algo falhou (talvez um acidente?).
Nesse processo, os IDs dos recursos mudam, então eu acho que o shp (geometria) que você possui e o dbf (tabela de atributos) usam IDs de recursos diferentes para os mesmos recursos, o que leva ao comportamento estranho que você experimenta. Parece que um dos dois arquivos ainda contém (parte dos) os recursos excluídos, enquanto o outro não.
Como lidar com isso
Atualização, novembro de 2016: O GDAL 2.2 é fornecido com a funcionalidade integrada para chamar a reembalagem automaticamente sempre que o arquivo é gravado no disco. Portanto, antes de fazer qualquer outra coisa: verifique a versão GDAL no QGIS sobre o diálogo e atualize sua versão do GDAL (geralmente enviada como parte do QGIS) para uma versão recente.
Provavelmente, não há muito o que você possa fazer além de fazer backups regulares para não perder mais dados do que pode suportar (você está fazendo isso de qualquer maneira, certo? 😉). E se você encontrar uma maneira de reproduzir isso (melhor com um conjunto de dados de amostra), crie um relatório de erro .
Se você enfrentar esse problema novamente, também poderá tentar criar um índice espacial no shapefile. Nesse processo, o QGIS chamará reembalar novamente no shapefile e poderá "reparar" o shp / dbf. Mas este é apenas um palpite não verificado.
Como mencionado por @rhm e nos comentários, também pode ajudar a renomear o arquivo {xyz} _packed. {Ext} para {xyz}. {Ext} . Se o arquivo compactado já foi completamente gravado e foi apenas a renomeação que falhou, é absolutamente válido executar esta etapa manualmente. No entanto, se o arquivo _packed não tiver sido completamente gravado, você poderá estar perdendo informações de partes de seus recursos. Portanto, antes de tentar fazer cópias de backup de todos os arquivos envolvidos.
Informações básicas sobre quando a reembalagem é chamada
Entre o QGIS 2.0 e 2.8, a reembalagem é chamada sempre que a camada é descarregada (saia do QGIS, carregue um projeto diferente ...). Se um recurso foi excluído ou uma geometria alterada, os arquivos .shp e .dbf com registros marcados como excluídos estão presentes.
A partir do QGIS 2.10, a reembalagem é chamada sempre que a camada é salva após uma operação com potencial para adicionar o sinalizador excluído aos registros. Portanto, os arquivos agora devem estar sempre em um estado saudável para serem processados por outros aplicativos.