Eu tenho um dos meus técnicos em GIS digitalizando algumas linhas no QGIS no formato shapefile. Não sei como ele fez isso (e nem ele), mas de alguma forma o shapefile ficou corrompido. Estava criando linhas aleatórias ou algumas das linhas que ele criou simplesmente desapareceriam. Entrei no ArcCatalogue para ver como ficava no ArcGIS e foi isso que vi:
Observe o ícone do ponto de interrogação, onde eu devo ver o ícone 'linha' do shapefile. Obviamente, o ArcCatalogue não pode ler este arquivo. Além disso, um segundo arquivo dbf parecia ter sido criado com o '_packed' anexado ao final. Quando olho para o shapefile usando o Windows Explorer, vejo que já existe. que fala com isso.
Tentei adicionar este arquivo ao ArcMap e recebi o seguinte erro:
O erro é bastante auto-explicativo ... o número de formas não corresponde ao número de registros. Só não sei por que isso está ocorrendo. Parece não haver nada on-line que explique como isso está ocorrendo no QGIS, mas vejo algumas ferramentas de reparo. Eu mesmo consertei isso apenas abrindo o QGIS, adicionando a camada e, em seguida, clicando com o botão direito na camada e 'salvando como' outro shapefile. Então, imaginei uma solução, mas espero encontrar uma solução que impeça que isso ocorra em primeiro lugar. Obrigado Mike
Respostas:
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.
fonte
Isso aconteceu comigo no QGIS. Consegui resolver o problema simplesmente excluindo '_packed' do nome do arquivo, como alguém sugeriu na seção de comentários acima.
fonte
Talvez este seja outro problema de um arquivo de índice .shx quebrado. O tipo de geometria deve ser armazenado nos cabeçalhos .shp e .shx. Se não corresponderem, o software irá gerar um erro.
Parece que o QGIS não é muito rigoroso em arquivos de índice quebrados e pode recriá-lo
Save As...
, enquanto o ARCGIS insiste em um arquivo de índice correto e cria um dbf (tabela de atributos) compactado para os recursos que podem ser encontrados nas partes corretas do arquivo de índice, ou talvez sem usar o índice.fonte
A reaparição de recursos excluídos e / ou o comportamento ímpar de arquivos shapefiles dos quais os recursos foram excluídos no QGIS é um bug conhecido. Consulte este relatório de bug 11007 e esta pergunta relacionada - Polígonos excluídos parecem reverter para versões mais antigas . Além de o ArcGIS ter problemas com esses shapefiles, quando salvos no QGIS como arquivos MapInfo TAB, eles causam uma falha no plug-in MapInfo RouteFinder, a menos que as tabelas sejam compactadas primeiro no MapInfo antes de carregar o RouteFinder. A execução do Universal Translator para converter esses shapefiles corrompidos no MapInfo falha.
Como você descobriu, o problema pode ser resolvido com um 'salvar como' no QGIS.
fonte