ArcGISのカバレッジ、シェープファイル、ジオデータベースで使用される空間データストレージ方法の違いについて疑問に思っていました。カバレッジが最初の形式で、その後にシェープファイル、そしてジオデータベースが続きました。では、これらの新しい形式のシェープファイルとジオデータベースの改善点は何ですか?
誰かがそれを例で説明してくれたら素晴らしいと思います。
ArcGISのカバレッジ、シェープファイル、ジオデータベースで使用される空間データストレージ方法の違いについて疑問に思っていました。カバレッジが最初の形式で、その後にシェープファイル、そしてジオデータベースが続きました。では、これらの新しい形式のシェープファイルとジオデータベースの改善点は何ですか?
誰かがそれを例で説明してくれたら素晴らしいと思います。
回答:
これはとても素晴らしい質問です。カバレッジ、シェープファイル、およびジオデータベースは、実装の観点と哲学的な観点から根本的に異なる地理空間データストアです。深く掘り下げることなく要約してみます。
1.カバレッジ:
カバレッジは、興味深い地理空間データ構造です。トポロジの保存に集中します。そのため、最初にジオメトリ要素、つまりすべてのジオメトリを構成するノード、エッジを保存することに重点が置かれていることがわかります。次に、それらのジオメトリを属性に関連付ける(したがって、それらが「機能」になる)別のテーブルセットが表示されます。
「クリーン」な報道が存在しないこと、(またはそれ以上)互いの上にノード(あるいはファジー許容距離内)次の2つを持っていない、すべてのノードの交差点にノードがあることを、例えば、一定のルールを保証します互いの上にある2つのエッジなど。それらは方向の感覚(from-> to)も持ち、その左側と右側を区別できます。
カバレッジは、トポロジ関係の認識を必要とする編集(区画境界の編集を想定)に非常に適しています。また、カバレッジは、設計によって幾何学的な冗長性を排除するため、非常によく圧縮されます。実際、最近では、TopoJSONのような最新の形式が、数十年前の記事で学んだのと同じ手法を使用し始めたことがわかります。
カバレッジは、3Dデータを扱う場合(たとえば、上側と下側が真下にあるブリッジのモデリングなど)に対処するために少し複雑になる可能性があります。 2D 平面グラフ計算用。
では、なぜそこから離れたのでしょうか?それには長い答えが必要ですが、おそらくESRIシェイプファイルが最初に人気となった理由をもう少し説明する必要があります。
2. ESRIシェープファイル:
シェイプファイルが登場しました。おそらくそれが持っていた最も重要な特徴は、それが(比較的)実装が簡単なオープン仕様であったことです。属性はDBFファイルを活用していたため、仕様の大部分を実装するライブラリがすでに多くありました。「クリーン」という概念はありませんでした。つまり、各ジオメトリは、周囲のジオメトリを考慮せずに、または交差することを考慮せずに、それ自体を表現することだけを心配する必要がありました。これは、シェープファイルが正しいことを確認するために複雑な計算を行う必要がないことを意味します(カバレッジカウンターパートとは異なります)。
互いに交差する複数のジオメトリがありますか?もちろん。互いの上に2つのポイント?私のゲストになります。
時には、(おそらく)「最良の」形式が勝つ形式ではなく、採用される形式であることがあります。フォーマットの実装が簡単な場合、複雑なフォーマットよりも採用される可能性が高くなります。それがシェープファイルでした。
突然、いくつかのライブラリ(オープンソースとプロプライエタリ)とそれをサポートするソフトウェアベンダーがありました。すべてが素晴らしかった。
明らかな疑問は、ジオデータベースが必要な理由です。
3.ジオデータベース:
ジオデータベースは、最も誤解されている地理空間データストアの1つだと思います。人々は通常、それらを単なる「地理空間形式」と考えています。数年前、誰かが「ESRIジオデータベースとは」と尋ねました。。私の答えが何であったかを繰り返す代わりに、最初にそれを読むことを歓迎します。待ちます :)
この回答を読んでジオデータベースとは何かを理解したので、その回答についてもう少し詳しく説明します。当時、SQLの最適化と、インデックス、列ストアなどを活用するクエリオプティマイザーの作成に関する多くの研究がありました(まだあります)。SQLデータストアの上にジオデータベースを構築することにより、すべての研究を無料で活用できます。地理空間の概念に集中するだけでよく、SQLデータストアが良くなると、ジオデータベースも無料で良くなります。悪い提案じゃない?
現在、地理空間データにはいくつかの仕様があります。ju審員は、これらの技術に代わるもの(もしあれば)についてまだ検討中です。それでも、このトピックに興味がある場合は、ここ数年前のGIS.SEでの質問に対する回答を読むことをお勧めします。「シェイプファイルを置き換える試みはありますか」
これがお役に立てば幸いです!
ほとんどの情報はEsriヘルプと検索で見つけることができるので、良い読み物をまとめました。
カバレッジはどのように保存されますか?これは独自の形式であるため、アルゴリズムの実装方法に関する技術仕様は見つかりません(@Vinceが光を当てない限り)。
シェイプファイルは後で登場し、一定レベルの相互運用性を提供する標準として実装されました。ESRI Shapefile Technical Descriptionには詳細な説明が含まれています。
ジオデータベースは後に導入されました。最初にパーソナルジオデータベース(MS Access)が登場し、次にファイルジオデータベース(バイナリ暗号化形式)と、ArcSDEおよびDBMSテクノロジーを利用したエンタープライズ(またはArcSDE)ジオデータベースが登場しました。:あなたはここにジオデータベースについてもっと読むことができるジオデータベースの種類とジオデータベースのアーキテクチャ。
GIS.SEの読み物:ファイルジオデータベース(* .gdb)、パーソナルジオデータベース(* .mdb)、またはシェープファイルのいずれを使用するか
パフォーマンスに関しては、多くのベンチマークが実行され、ファイルジオデータベースは情報の読み取り/書き込みの点で最速であることが示されています。パーソナルジオデータベースとシェープファイルははるかに遅く、おそらくそれらを使用する唯一の理由は、MS Accessのビジネスロジックまたはシェープファイルの読み取り/変換を念頭に置いて構築された古いシステムをサポートすることです。
ArcSDEベースのジオデータベースは、多くの場合、DBMSのチューニング時にファイルジオデータベースとほぼ同等のパフォーマンスを発揮しますが、すべてが格納されるデータの種類、ネットワーク、ハードウェアに依存します。ベンチマークの詳細については、Esriシステム設計戦略のリソース(およびこちら)を参照してください。
これらの形式の主な違いは、フィーチャがジオメトリに関連する方法です。カバレッジの全盛期には、コーディング言語はFORTRANでした。これは、COMMONブロックの固定バッファーサイズを意味していました。これらの中で最も制限的なのは、ラインプリミティブ(「アーク」)あたり500の頂点でした。この制限により、「疑似ノード」(アークが他の1つのアークのみと結合する場所)の概念が導入され、他の多くのデータアクセス操作が複雑になりました。
カバレッジモデルは「ポリゴンアークリスト」(PAL)を使用してポリゴンを記述しました。1つのファイルを読み取ってアークのリストを取得し、アーク自体を読み取って頂点カウントを取得し、すべての頂点を保存してから、もう一度アークを読み取ります。今回は、頂点を順方向または逆方向にコピーして、完全なポリゴンを組み立てます。ARCファイルに2回アクセスした後にのみ、ポリゴンを適切に記述できます。その後、同じアークの多くに(反対方向に)アクセスして、ポリゴンの隣をシェーディングする必要があります。
比較すると、シェープファイルおよびさまざまなジオデータベース形式は、完全なジオメトリを単一のオブジェクトとして保存します(オブジェクトの物理的な実装方法に関するさまざまな実装の詳細を含む)。これには、共有境界を編集しようとする場合の欠点がありますが、その操作はポリゴンシェーディングよりもかなり少なくなります。
「全体形状」ストレージモデルは、カバレッジ形式と新しい形式との重要な違いであり、この違いは非常に基本的なものであるため、シェープファイルとさまざまなジオデータベース形式との実際の違いはほとんどわかりません。実際、シェープファイル形式は、新しい頂点レイアウトを導入するよりも単純だったという理由だけで、FGDBが正確な形式を使用していない場合でも、FGDB APIを介してFGDBジオメトリにアクセスするために使用されました。
フォーマット間のもう1つの違いは、ジオデータベースがフィーチャクラス間の関係をモデル化できることです。Ragiが指摘したように、
カバレッジは、トポロジ関係の認識を必要とする編集(区画境界の編集を想定)に非常に適しています。
ただし、この認識は単一のカバレッジ内にのみ存在します。2つ以上のカバレッジ間の関係をモデル化する場合、「不正な」トポロジ関係をチェックするコードを記述するのはあなたの責任です。
たとえば、パーセルポリゴンにギャップを持たせることができず、パーセルの境界が道路やカバレッジまたはシェープファイルと正確に一致する必要がある場合は、そうであることを確認し、これらのルールが守られないエラーを手動で修正する必要があります。
オプションで、ジオデータベースはトポロジオブジェクトをサポートできます。これにより、データに許容されるトポロジルールを定義できます。重要なことに、これらのルールは、ジオデータベース内のフィーチャクラス内およびフィーチャクラス間で発生する可能性があります。
ArcMap内のトポロジ編集ツールを使用すると、トポロジ違反を検出し、場合によっては自動的に修正できます。
ジオデータベーストポロジ(「古き良き時代」)が導入される前は、長く複雑なAMLスクリプトを記述してトポロジ違反を検出し、ArcEditでカバレッジを手動で編集するのが一般的でした(あまり面白くない)。