OceanBaseデータベースのOracleモードでは、デフォルトのコンストラクタ(SDO_GEOMETRY())、Well-Known-Binary (WKB) データ形式、またはWell-Known-Text (WKT) データ形式を使用して SDO_GEOMETRY データ型を作成できます。
SDO_GEOMETRYコンストラクタ構文
SDO_GEOMETRY({to_blob('wkb_value') | 'wkt_value'} [, srid])
パラメータの説明:
wkb_value:Well-Known-Binary (WKB) データ形式を表す幾何オブジェクト。これは、地理空間オブジェクトのタイプと座標データを記述するために使用されるバイナリエンコードされた文字列です。例えば、0101000000000000000000F03F000000000000F03Fは、点オブジェクトを表すWKB値です。wkt_value:Well-Known-Text (WKT) データ形式を表す幾何オブジェクト。これは、地理空間オブジェクトのタイプと座標データを記述するために使用されるテキスト文字列です。例:POINT(1.0 1.0)は、点オブジェクトのWKT値を表します。LINESTRING(0 0, 1 1, 2 2)は、3つの点で構成される線分を表します。POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))は、閉じた長方形を表します。MULTILINESTRING((0 0, 1 1, 2 2), (3 3, 4 4, 5 5))は、2つの線分で構成される複数線分オブジェクトを表します。MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)), ((2 2, 2 3, 3 3, 3 2, 2 2)))は、2つの多角形で構成される多重多角形オブジェクトを表します。GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2))は、1つの点オブジェクトと1つの線分オブジェクトを含む幾何オブジェクトの集合を表します。
srid:オプションで、デフォルト値はNULLです。空間参照識別子(Spatial Reference Identifier)を表し、幾何オブジェクトが使用する空間参照システムを示します。sridパラメータは整数値です。
説明
wkb_value および wkt_value の値は、英字のシングルクォート内に入れる必要があります。
デフォルトのコンストラクタを使用してSDO_GEOMETRYオブジェクトを作成する
WKBデータ形式を使用してSDO_GEOMETRYオブジェクトを作成する
SDO_GEOMETRY() コンストラクタとWKBデータ形式を使用して、SDO_GEOMETRY オブジェクトを作成します。
例:
以下のクエリステートメントを使用して、バイナリ文字列を SDO_GEOMETRY タイプの空間オブジェクトに変換し、クエリ結果でその名前を TEST_SDO_GEOMETRY とします。このクエリステートメントでは、TO_BLOB() 関数を使用してバイナリ文字列 01010000000000000000000000000000000000F03F を BLOB タイプのデータに変換し、SDO_GEOMETRY() コンストラクタを使用して SDO_GEOMETRY データ型の空間オブジェクトを作成します。
obclient [SYS]> SELECT SDO_GEOMETRY(to_blob('01010000000000000000000000000000000000F03F'), null) AS TEST_SDO_GEOMETRY FROM dual;
実行結果は次のとおりです:
+------------------------------------------------------------------+
| TEST_SDO_GEOMETRY |
+------------------------------------------------------------------+
| SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(0, 1, NULL), NULL, NULL) |
+------------------------------------------------------------------+
1 row in set
WKTデータ形式を使用してSDO_GEOMETRYオブジェクトを作成する
SDO_GEOMETRY() コンストラクタとWKTデータ形式を使用して、SDO_GEOMETRY オブジェクトを作成します。
例:
以下のクエリステートメントを使用して、TEST_SDO_GEOMETRY という名前の SDO_GEOMETRY タイプの空間オブジェクトを作成し、その値を二次元点オブジェクトに設定します。SDO_GEOMETRY() コンストラクタを使用して、SDO_GEOMETRYデータ型の空間オブジェクトを作成します。POINT(-1e5 1e-3) を使用して、二次元点オブジェクトのWell-Known-Text (WKT) 文字列を表します。ここで、-1e5 は点のX座標が-100000を表し、1e-3 は点のY座標が0.001を表します。
obclient [SYS]> SELECT SDO_GEOMETRY('POINT(-1e5 1e-3)', null) AS TEST_SDO_GEOMETRY FROM dual;
実行結果は次のとおりです:
+----------------------------------------------------------------------------+
| TEST_SDO_GEOMETRY |
+----------------------------------------------------------------------------+
| SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-100000, 0.001, NULL), NULL, NULL) |
+----------------------------------------------------------------------------+
1 row in set