シェープファイルのshxファイルとshpファイルの違いについて説明していますか?


11

shpファイルとshxファイルの違いについての詳細な説明を探していますが、ほとんど役に立ちません。「shpにはジオメトリが含まれています-shxにはジオメトリのインデックスが含まれています」を超えています。

私が尋ねる理由は、最近QGISで作業しているときに、これらのファイル拡張子の正確な違いについて私の疑問につながる2つの観察をしたためです。

  1. QGISはshxとshpの両方を開いて表示でき、各ファイルは出力(表示)でほぼ同じに見えます。
  2. 厳密にはそうではありません-一致するshx / shpファイルが互いに相対的にわずかに「オフキルター」で表示されることがあります。これは投影の問題ではないようです。単純に、互いにまったく同じ場所に描画されません。

これらの観察から、なぜこれらの表示の違いが存在するのか、なぜQGISがshpと同じ方法でshxを開いて操作できるのかについて興味を持ったのです。単一のエンティティ全体として正しく機能するには、.dbfと.shxが必要です。



回答:


18

シェープファイル形式の最も信頼できるリファレンスは、ESRIシェープファイル技術説明です。

shx「インデックス」として説明するのは誤解を招きます。代わりに、これは直接アクセスオフセットファイルです。にはデータがありません。shx最初の100バイトとレコード番号のクローン、およびのそのレコードの開始バイトへのオフセットのみshpです。属性のための唯一の場所であるdbf( - 、反対に「知識」にもかかわらず、スタンドアロンであるshxネクタイないshpdbf、唯一のレコード数がそれを行い)。

シェープファイルはに「ギャップ」を有することが可能であるshp作るどのshx不可欠のが、実際にはEsriのツールは、全体を書き換えますshpし、shxレコードを編集して作成した任意のギャップが削除されるように。ほとんどの状況では、shxコンテンツがなくなった場合にコンテンツを回復することができます。shpまたはについても同じことは言えませんdbf

の命名shpshxVFILE、PrImeOSオペレーティングシステムの可変幅ダイレクトアクセスモジュールの成果物であり、最初にEsriによってUnix、VAX / VMS、Data General、IBMに移植され、次にMicrosoft Windowsに移植されます。sbn/ sbx空間インデックスのペアを共有し、同じ命名規則(これらはシェープファイルの仕様の範囲内で文書化されていませんが)。元のVFILEFORTRANライブラリ内では、ベースファイルのみに名前が付けられ、xファイル作成時に終端文字を含むオフセットファイルが表示されました。


1
後で:The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.論理的にはデータベースインデックスに似ていますa data structure that improves the speed of data retrieval operations
user30184 2018

2
いいえ、shx絶対にない空間インデックス。
Vince

1
shx実際にはシリアルアクセスを遅くします(I / Oを増やします)が、直接アクセスを可能にします。これは改善と見なすことができます。
ビンス

1
「...、最初の百バイトの唯一のクローンとレコード番号と...」"... shxはshpとdbfを結び付けません。それを行うのはレコード番号のみです。" 最初に、「レコード番号」は.shx内にあると言います。後で、.shxは.shpと.dbfを結合しないと言いますが、その「レコード番号」は結合します。「レコード番号」が2つの引用形式を結び付け、それが.shxの一部である場合、なぜ.shxが.shpと.dbfを結び付けていると言えないのですか?あなたの答えのこの部分は私を混乱させます。明確にできますか?Tks。
Andre Silva

2
レコード番号は、両方の中に存在しているshpshx。には存在せずdbf、ヘッダーレコードの末尾からの暗黙のバイトオフセット(フィールドカウントを含むテーブルの40バイト、および各フィールドに追加の40バイト)にレコードサイズを掛けたものだけです。私は、「C」とJavaの両方でシェープファイルのリーダーやライターを書いた、そしてそれがリンクし、プログラムのループカウンタ変数であるshp/をshxしますdbfshx開始に使うrecno整合性チェック、オフセットにより、記録番号のリンクを提供しshp、レコード、より多くの何もありません。
Vince

12

仕様https://www.esri.com/library/whitepapers/pdfs/shapefile.pdfから読み取ることができるので、Shxだけで地図に表示するものはありません。

確かに、QGIS 3.0.3で.shxパーツを選択してシェープファイルを開くことは可能ですが、場所に違いはありません。私はシェープファイルが同じパスを介して開かれていて、結果は同じだと思います。ジオメトリのさまざまな配置の問題を再現するためのテストケースを作成できる場合は、問題に関するQGISチケットを作成してください。

.shpパーツを削除すると、QGISが.shxだけを開かないことがわかります。


私の間違い、私は同じファイルを再度チェックしました、そしてそれは実際に不一致の予測でした。これらを再調整すると、同じ層のsh​​xバージョンとshpバージョンが整列し、期待どおりに同一でした。興味深いことに、QGISでは.shxと.shpの両方を同じプロジェクトにアップロードでき、それぞれ独自のソースパスを表示しますが、他の人から指摘されているように、実際には同じファイルであるため、出力はまったく同じジオメトリです。
マギー

2

.shx.shpファイルのインデックスです。

.shpファイルを開くには、両方が必要です。.shxQGISでファイルを開くと、ファイルが開かれ.shpます。オフの場合は、投影に問題があります。

ShapeFileには3つのコンポーネントが必要です。

  1. .shp -ジオメトリを保存します
  2. .shx -インデックスを保存します
  3. .dbf -属性を格納します

.prj通常は、投影情報を保存するファイルをお勧めします。ShapeFileに関連付けられた他のファイルが存在する可能性がありますが、これらは絶対に必要なわけではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.