シェープファイルよりも空間ライトを使用する利点は?[閉まっている]


35

空間ファイルには形状ファイルの制限がなく、移植性もあるため、空間ファイルの方が形状ファイルよりも有用であることがわかりました。ここで多くの人々がデータを交換するためにシェープファイルを使用しており、専門家でさえこの新しいフォーマットについては知りません。

シェープファイルよりも空間ライトを使用する利点は何ですか?

シェープファイルの代わりに使用できますか?

ポータブルである、つまりUSBスティックを使用して交換できる形式のみに注目してください。GML、GeoJSON、KML、CSVはオプションではなく、GISで直接編集することはできません。

更新:5年以上が経過しており、新しい開発は空間ライトに関連するジオパッケージに向けられています。

だから今質問は、GEODATABASEよりもGEOPACKAGEを使用する利点に似ていますか?

回答:


27

シェープファイルは、GISベクターデータファイル交換の最も一般的な要素です。シェープファイルのアーカイブを送信すると、だれかが基本的なGISを構築できることをほぼ保証できます。

SpatiaLiteの利点は次のとおりです。

  • すべてが1つのファイルにあります。レイヤーごとのshp / shx / dbf / idx / prjの混乱はありません。
  • データだけでなくロジックも、VIEWおよびTRIGGERの形式で含めることができます。
  • 組み込みの空間インデックス。これにより、大面積の迅速な検索が可能になります。
  • これらは、データベース管理者のスキルを必要としない、実際の(わずかに制限されている場合、ほとんどがマルチユーザーアクセスの)データベースシステムです。

ただし、いくつかの欠点があります。

  • 誰もが使用できるわけではありません。
  • それらはまだ、ノードと直線から構築されたジオメトリにほとんど制限されています。スプラインとサーフェスが必要な場合は、他の場所を見てください。

8
良い投稿ですが、空間インデックスについて2つのポイントがあります。シェープファイルにも空間インデックスを付けることができます。次に、Spatialite空間インデックスに明示的に結合する必要があるため、扱いにくいクエリが発生する可能性があります。私はまだSpatialite DB内でデータを移動することを好みますが、より堅牢なクエリプランナーを活用するためにPostGISデータベースにインポートします。
HeyOverThere

22

シェープファイルは1種類のジオメトリにバインドされているため、1つのプロジェクトに対して多数のファイルを取得できます。古物データベース形式を使用しているため、フィールド名も制限されています。

spatialiteでは、プロジェクトデータ全体を1つのファイルに保持できます。フィールドに好きな名前を付けます(まあ、ほぼ)。

spatialiteの唯一の欠点は、更新サイクルが高速であるため、別の(古い)バージョンで書き込まれたデータの読み取りまたは書き込みが困難になることです。


15

scrussの答えに加えて、シェープファイルにはいくつかの制限があります。

  • フィールド名の最大長は10文字です
  • 最大ファイルサイズ(.dbf / .shp)は2GB
  • 数値属性は文字(整数/浮動小数点数)として保存され、丸めなどの潜在的な問題を引き起こします。
  • NULL値はシステム間で異なって解釈されます

4

私にとって最大の利点は、単一ファイル形式のリレーショナルデータベースシステムです。多くの利点の1つは、空間関数を使用してビューを作成することです。ポイントのセットが与えられ、方法が属性に基づいてポイントをバッファリングし、それらのバッファと他の地理的特徴との一致をテストする方法である場合を考えます。通常、このワークフローをシェープファイルで使用するには、各操作を別のシェープファイルとして永続化する必要があります。指定されたデータのいずれかが更新された場合、チェーン全体を再度実行する必要があります。環境によっては、入力データが知らないうちに変更される可能性があることは言うまでもありません。ジオメトリ操作にSQLビューを使用する場合、これは問題ではありません。(シェープファイルに関するこの種の問題に対処するツールがあることは承知していますが、問題はspatiaLiteデータベースに関するものです。)


2

1つのファイルにあるすべてのものも欠点です。何かが壊れている場合、修正するのがはるかに困難です。ファイルのサイズも、ほとんど空のデータセットであっても、3.7 MBから始まるようです。また、テキスト、整数、および浮動フィールドのみをサポートしているようです。日付/時刻またはブール値フィールドはありません。少なくともQGIS 1.8でテストする場合


1
Spatialiteには日付/時刻型がありますが、日付と時刻のデータ型にはすべての型があります。
スクルース

2
リンク先のページから引用した「SQLiteには、日付や時刻を保存するためのストレージクラスがありません」。はい、テキストフィールドには何でも保存できますが、それはまだテキストであり、計算を行う前に解析する必要があります。
Uffe Kousgaard

いいえ、そうではありません。次のようなクエリを実行できselect * where date < '1980-01-01'、数学を実行します。
スクラブ

つまり、テキストが解析されます。別の方法は、日付がエンジンによって直接理解される数値として保存されることです。4月31日またはその他の違法な値に遭遇するリスクはありません。テキストでは、<演算子を適用する前に、数値に変換する必要があります。
Uffe Kousgaard

1
@UffeKousgaard:.dbfファイルでは、数値(整数/浮動小数点数)および日付時刻は文字として保存されるため、解析の場合、シェープファイルはここでは何の利点もありません。
オイビンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.