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