空間データベースは、幾何学的空間で定義されたオブジェクトを表す空間データと、そのようなデータを照会および分析するためのツールを含むように拡張された汎用データベース(通常はリレーショナル データベース) です。
ほとんどの空間データベースは、点、線、ポリゴンといった単純な幾何学的オブジェクトの表現を可能にします。一部の空間データベースは、 3Dオブジェクト、トポロジカルカバレッジ、線形ネットワーク、 TIN(不規則三角形網)といったより複雑な構造を扱います。一般的なデータベースは、様々な数値型や文字型のデータを管理するために開発されてきましたが、空間データ型を効率的に処理するには追加機能が必要であり、開発者はしばしばジオメトリデータ型やフィーチャデータ型を追加してきました。
地理データベース(またはジオデータベース)は、地理参照された空間データベースであり、地理データ(またはジオデータ、つまり地球上の位置に関連付けられたデータ)の保存と操作に使用されます。 [a]特に地理情報システム(GIS)において使用されます。現在、ほぼすべてのリレーショナルおよびオブジェクトリレーショナルデータベース管理システムは空間拡張機能を備えており、一部のGISソフトウェアベンダーは独自の空間拡張機能をデータベース管理システムに開発しています。
オープン・ジオスペース・コンソーシアム(OGC)は、シンプルフィーチャ仕様(1997年に初公開)[1]を開発し、データベースシステムに空間機能を追加するための標準を定めました。[2] SQL /MM Spatial ISO/IEC標準は、シンプルフィーチャを拡張した構造化クエリ言語およびマルチメディア標準の一部です。[3]
空間拡張機能によってデータベースに追加されるコア機能は、1 つ以上の空間データ型であり、空間データを属性値としてテーブルに格納できます。[4]通常、単一の空間値は、ベクター データ モデルに基づく幾何学的プリミティブ(ポイント、ライン、ポリゴンなど) です。ほとんどの空間データベースのデータ型は、幾何学的プリミティブを表すための OGCシンプル フィーチャ仕様に基づいています。一部の空間データベースでは、ラスター データの格納もサポートされています。すべての地理的位置は空間参照システムに従って指定する必要があるため、空間データベースでは座標系の追跡と変換も考慮する必要があります。多くのシステムでは、空間列がテーブルで定義されるときに、ルックアップ テーブルに格納されている使用可能なシステムのリストから選択される座標系も含まれます。
空間データベースにおける2つ目の主要な機能拡張は、クエリ言語( SQLなど)への空間機能の追加です。これにより、従来のGISソフトウェアで利用可能なのと同じクエリ、分析、および操作を空間データベースで実行できるようになります。ほとんどのリレーショナルデータベース管理システムでは、この機能はSQL SELECT文で使用できる新しい関数セットとして実装されています。Open Geospatial Consortium標準では、いくつかの種類の操作が規定されています。
一部のデータベースでは、特にMongoDBやCouchDBなどのNoSQLシステムの場合には、これらの操作の簡略化または修正されたセットのみをサポートします。
空間インデックスは、空間データベースにおいて空間クエリを最適化し、空間アクセスメソッドを実装するために使用されます。データベースシステムは、インデックスを使用してデータ値を線形(アルファベット順など)にソートすることで、値を迅速に検索します。しかし、このデータインデックス方法は、 2次元または3次元空間における空間クエリには最適ではありません。代わりに、空間データベースは、多次元順序付け用に特別に設計された空間インデックスを使用します。 [5]一般的な空間インデックス方法には、以下のものがあります。
空間クエリは、ジオデータベースを含む空間データベースでサポートされている特殊なデータベースクエリです。このクエリは、非空間SQLクエリとはいくつかの重要な点で異なります。最も重要な点の2つは、ポイント、ライン、ポリゴンなどのジオメトリデータ型を使用できる点と、これらのジオメトリ間の空間関係を考慮する点です。
クエリの関数名はジオデータベースによって異なります。以下は、PostgreSQLの拡張機能であるフリージオデータベースであるPostGISに組み込まれている関数の一部です(「ジオメトリ」という用語は、点、線、ボックス、またはその他の2次元または3次元の形状を指します)。[7]
関数プロトタイプ: functionName (パラメータ): 戻り値の型
ST_Distance(geometry, geometry) : numberST_Equals(geometry, geometry) : booleanST_Disjoint(geometry, geometry) : booleanST_Intersects(geometry, geometry) : booleanST_Touches(geometry, geometry) : booleanST_Crosses(geometry, geometry) : booleanST_Overlaps(geometry, geometry) : booleanST_Contains(geometry, geometry) : booleanST_Length(geometry) : numberST_Area(geometry) : numberST_Centroid(geometry) : geometryST_Intersection(geometry, geometry) : geometryしたがって、都市のポイント レイヤーと国のポリゴン レイヤー間の 空間結合は、次のように空間拡張 SQL ステートメントで実行できます。
SELECT * FROM cities , countries WHERE ST_Contains ( countries.shape , cities.shape )
Intersectベクター オーバーレイ操作 (GIS ソフトウェアのコア要素) は、次のように複製できます。
SELECT ST_Intersection ( veg . shape , soil . shape ) int_poly , veg . * , soil . * FROM veg , soil where ST_Intersects ( veg . shape , soil . shape )
[...] 1997年 [...] OGCはOpenGISシンプルフィーチャ仕様をリリースしました。これは、2次元ジオメトリに基づく「シンプルフィーチャ」を用いて、多様なシステムが通信できるようにするインターフェースを規定しています。サポートされているジオメトリタイプには、ポイント、ライン、ラインストリング、曲線、ポリゴンが含まれます。各ジオメトリオブジェクトは、そのジオメトリオブジェクトが定義される座標空間を記述する空間参照系に関連付けられています。