仕様によると、shx には 100 バイトのヘッダーとそれに続く一連の 8 バイトのレコードが含まれています。各レコードには、メインの .shp データ ファイル内のレコードの 4 バイトのオフセットと 4 バイトのコンテンツ長が格納されます。
+-----------------------------------------------+
| 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) |
+-----------------+------------------+
| .... |
+-----------------+------------------+
オフセットは 16 ビット ワードで指定されるため、最初のレコードのオフセットは 50 であることに注意してください (.shp ヘッダーは 100 バイトまたは 50 ワードの長さであるため)。コンテンツの長さも 16 ビット ワードで指定されます。
したがって、 からレコード数を(index_file_length-100)/8
計算し、インデックスを使用して .shp ファイル内の特定の形状レコードにランダムまたは順番にアクセスできます。