空間データの空間参照システム (Spatial Reference System、SRS) は、座標に基づく地理的位置システムです。OceanBase データベースの現在のバージョンでは、システムがデフォルトでサポートする SRS のみが対応しています。
空間参照システムタイプ
空間参照システム(SRS)は主に以下のカテゴリに分類されます:
- 地理SRS:地球楕円体を基準とし、経度と緯度を座標として使用します。通常は角度(例:度)で表され、実際の地理的位置(例:GPSの経度・緯度)を記述するのに適しています。一般的な例としてWGS 84(SRID=4326)があります。
- 投影SRS:楕円体上の地理座標を平面に投影し、デカルト座標系を採用します。長さ単位(例:メートル、フィート)を使用し、平面地図の表示や空間分析でよく見られます。
さらに、OceanBaseは特殊な空間参照システムであるSRID 0もサポートしています。これは無限大で無単位の二次元平面(抽象的なデカルト座標系)を表します。この座標系には地理的意味がなく、地球表面のどの位置にも対応しません。通常はゲーム、シミュレーション、工学設計などの仮想または局所座標のシナリオで使用されます。注意点として、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(拡張バーコス・ノール形式)に基づいて定義された標準的なテキスト表現方法であり、幾何データの格納だけでなく、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=4326(WGS 84)の場合のように、経度・緯度範囲を利用した事前定義の細かいメッシュ分割を行うことができません。このような空間インデックスの解像度の欠如により、SRID=0 のインデックスフィルタリング効率が低下し(False Positivesが過剰に発生)、高並行性や大規模データのシナリオでは、正しい空間参照系を設定した SRID=4326 データに比べて、クエリ性能が著しく低下します。