Pergunta
Se você tiver dados geográficos armazenados em formas ESRI, você tem pelo menos três arquivos: Um. Terminando com .shp que contém os dados de vetor, uma terminando com .dbf que contém atributos e um arquivo terminando com .shx contendo um índice
Eu estou interessado no arquivo shx. Como funciona? Será que ela contém um mapeamento completo, como 'primeiros mapas de geometria a terceira fila do dbf e mapas segunda geometria para a primeira linha' para cada geometria? Ou será que ele funcione diferente?
Solução
De acordo com o especificação o shx contém um cabeçalho de 100 bytes seguido por uma sequência de 8 fichas byte. Cada registro armazena um 4 byte offset e um comprimento de conteúdo de 4 bytes para um registro no arquivo de dados shp principal.
+-----------------------------------------------+
| header (100 bytes) |
+-----------------+------------------+----------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| .... |
+-----------------+------------------+
Note-se que o deslocamento é especificado em palavras de 16 bits, de modo a compensar para o primeiro registo é 50 (como o cabeçalho SHP é de 100 bytes, ou 50 seja, comprimento). O comprimento de conteúdo também é especificado em palavras de 16 bits.
Assim, você pode descobrir o número de registros de (index_file_length-100)/8
, e usar o índice para acessar um registro forma particular no arquivo shp de forma aleatória ou em seqüência.
Outras dicas
Fine resposta por Paul Dixon.
Embora eu estava me perguntando o que você vai fazer com ele! Se você estiver indo para escrever código para ler ou escrever arquivos SHP eu fortemente sugiro usar uma biblioteca em vez - existem alguns bons livres de código aberto queridos como GDAL , também alguns bons comerciais.