空間データの空間参照系 (Spatial Reference System、SRS) は、座標に基づく地理的位置システムです。OceanBaseデータベースの現行バージョンでは、システムがデフォルトでサポートするSRSのみが利用可能です。
空間参照系の種類
空間参照系(SRS)は、主に以下のタイプに分類されます:
- 地理SRS:地球の楕円体を基準として、経度と緯度を座標として使用します。通常、角度(度など)で表され、リアルな地理的位置(例えばGPSの経緯度)を記述するために使用されます。一般的な例として、WGS 84(SRID=4326)があります。
- 投影SRS:楕円体上の地理座標を平面に投影し、デカルト座標系を使用します。長さの単位(メートル、フィートなど)で表され、平面地図の表示や空間分析に広く用いられます。
さらに、OceanBaseは特殊な空間参照系としてSRID 0をサポートしています。SRID 0は、無限大で単位を持たない2次元平面(抽象的なデカルト座標系)を表します。この座標系は地理的な意味を持たず、地球表面のどの位置とも対応しません。通常、ゲーム、シミュレーション、エンジニアリングデザインなどの仮想的または局所的な座標シナリオで使用されます。注意すべき点として、SRID 0は空間データのデフォルトのSRIDであり、使用する際は、実際の地理座標系との用途を慎重に区別する必要があります。
空間参照系の情報の取得
INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMSシステムテーブルをクエリすることで、データベースに組み込まれている空間参照系の情報を取得できます。例えば、SRIDが4326(WGS 84)の定義は以下のとおりです:
obclient> SELECT * FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS
WHERE SRS_ID = 4326\G
*************************** 1. row ***************************
SRS_NAME: WGS 84
SRS_ID: 4326
ORGANIZATION: EPSG
ORGANIZATION_COORDSYS_ID: 4326
DEFINITION: GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]
DESCRIPTION: NULL
1 row in set
上記の例は、GPSシステムで広く使用されているSRSを示しており、SRS_NAMEはWGS 84、SRS_IDは4326です。DEFINITIONフィールドはWKT(Well-Known Text)形式で、SRSの詳細な構造を記述しています。WKTはEBNF(Extended Backus Naur Form)に基づいて定義された標準的なテキスト表現方法であり、幾何データの保存に使用されるほか、GISシナリオにおいてもSRSの記述として利用できます。
以下の2点に注意してください:
SRS_IDの値は、空間データのSRIDフィールドや空間関数の関連パラメータとして直接使用できます。- 空間演算を行う際は、すべての参加する幾何オブジェクトが同一のSRIDを有している必要があります。そうでない場合、エラーが発生します。
SRIDの選択ガイド
空間データを使用する際、計算結果の正確性を確保するためには、SRID(空間参照系識別子)を正しく設定することが重要です。データタイプに応じて適切なSRIDを選択してください。
**SRID=4326の使用を推奨します。**ほとんどの地理アプリケーションではSRID=4326を使用してください。SRID=4326は距離、面積、バッファの正確な計算をサポートしており、国際標準に準拠し、他のGISシステムとの連携にも適しています。以下のシナリオに適しています。例えば:
- GPS座標(経度・緯度)
- スマートフォンの位置取得や地図API(Google Mapsなど)から取得した座標
- 市街地、道路、POIなどの地理情報
SRID=0の使用には注意が必要です。SRID=0は「座標系なし」という意味であり、すべての計算は純粋な数学的平面として処理されます。その結果は地理的な意味を持ちません。
警告
実際の経度・緯度データを SRID=0 に設定しないでください。距離や面積などの分析結果が大幅に誤って表示される可能性があります。
SRID=0は、データが地球上の実際の位置を表さないシナリオにのみ使用できます。例えば:
- ゲーム地図や仮想シナリオにおける座標
- CADエンジニアリング図や建築平面図などの局所座標系
- 抽象チャート、フローチャート、またはテスト用のシミュレーションデータ
さらに、地理情報のクエリにおいては、SRID=0は無限の平面デカルト座標系として扱われ、地球の経緯度範囲に基づいて事前に定義された高精度のメッシュ分割が行われません。この空間インデックスの解像度不足により、SRID=0のインデックスフィルタリング効率が低下し(False Positiveが多発する)、高並列処理や大規模データのシナリオでは、正しく空間参照系が設定されたSRID=4326データに比べて、クエリ性能が大幅に低下します。