Estou procurando uma explicação mais aprofundada das diferenças nos arquivos shp e shx com pouco proveito. Quero dizer além do 'shp contém geometria - shx contém um índice da geometria'.
A razão pela qual pergunto é porque, enquanto trabalhava no QGIS recentemente, fiz duas observações que levaram a perguntas em minha mente sobre as diferenças exatas nessas extensões de arquivo:
- O QGIS pode abrir e exibir shx e shp, e cada arquivo parece ser mais ou menos idêntico em sua saída (exibição),
- mas não exatamente - notei que, às vezes, os arquivos shx / shp correspondentes exibem um pouco de 'descontrole' um em relação ao outro. Não parece ser um problema de projeção, eles simplesmente não desenham exatamente no mesmo local que o outro.
Essas observações me deixaram curioso sobre por que essas diferenças de exibição existem e por que o QGIS pode abrir e operar o shx da mesma maneira que o shp, quando anteriormente meu entendimento era de que o shp é o arquivo 'mestre', se preferir, mas requer que .dbf e .shx funcionem corretamente como uma única entidade inteira.
qgis
shapefile
file-formats
Maggie
fonte
fonte
Respostas:
A referência definitiva no formato shapefile é a Descrição técnica do ESRI Shapefile .
É enganoso descrever o
shx
como sendo um "índice". Em vez disso, é o arquivo de deslocamento de acesso direto. Não há dados no arquivoshx
, apenas um clone dos primeiros cem bytes e número do registro e deslocamento para o byte inicial desse registro no arquivoshp
. A única localização para os atributos é odbf
(que é autônomo - apesar de "conhecimento" ao contrário, ashx
não amarrar oshp
edbf
, apenas um número recorde faz isso).É possível que os shapefiles tenham "lacunas" nas
shp
quais tornam oshx
indispensável, mas, na prática, as ferramentas da Esri reescrevem a totalidadeshp
e,shx
portanto, qualquer lacuna criada pela edição de registros é removida. Na maioria das condições, é possível recuperar oshx
conteúdo se ele desaparecer; o mesmo não pode ser dito para oshp
oudbf
.A nomeação
shp
eshx
é um artefato doVFILE
módulo de acesso direto de largura variável do sistema operacional PrImeOS, portado pela Esri para Unix, VAX / VMS, Data General e IBM, depois para o Microsoft Windows. O parsbn
/sbx
índice espacial compartilha a mesma convenção de nomenclatura (embora não esteja documentada na especificação do shapefile). NaVFILE
biblioteca FORTRAN original , apenas o arquivo base foi nomeado e o arquivo de deslocamento com umx
caractere de terminal apenas apareceu na criação do arquivo.fonte
The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.
logicamente, é análogo aos índices do banco de dadosa data structure that improves the speed of data retrieval operations
.shx
absolutamente não é espacial.shx
fato retarda o acesso de série (mais I / O), mas faz acesso directo possível , o que poderia ser considerado uma melhoria.shp
eshx
. Ele não está presente nodbf
, apenas o deslocamento implícito de bytes do final dos registros de cabeçalho (40 bytes para a tabela, que inclui uma contagem de campos e 40 bytes adicionais para cada campo) vezes o tamanho do registro. Eu escrevi leitores e escritores de shapefile em 'C' e Java, e é a variável de contador de loop do programa que vincula oshp
/shx
aodbf
. Eleshx
fornece a vinculação do número do registro, compensado com uma verificação de integridade do reconhecimento, até o início doshp
registro, nada mais.O Shx certamente não tem nada para mostrar em um mapa, pois você pode ler a especificação https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf .
Você está certo de que é possível abrir o shapefile selecionando a parte .shx no QGIS 3.0.3, mas não vejo nenhuma diferença no local. Eu acredito que o shapefile ainda é aberto pelo mesmo caminho e o resultado é o mesmo. Se você puder fazer um caso de teste para reproduzir o problema de diferentes posicionamentos das geometrias, crie um ticket QGIS sobre o problema.
Se você excluir parte .shp, verá que o QGIS não abre .shx sozinho.
fonte
.shx
é o índice para um.shp
arquivo.Você precisa de ambos para poder abrir o
.shp
arquivo. Se você abrir um.shx
arquivo no QGIS, ele abrirá o.shp
arquivo. Se eles estiverem desativados, há um problema de projeção.Um ShapeFile precisa de três componentes:
.shp
- armazena a geometria.shx
- armazena o índice.dbf
- armazena os atributos.prj
Geralmente, é recomendado um arquivo que armazena as informações da projeção. Pode haver outros arquivos associados a um ShapeFile, mas eles não são absolutamente necessários.fonte