SDO_GEOMETRYは複雑なデータ型であり、複数の固有プロパティを持ち、PL/SQLからこれらのプロパティにアクセスできます。
SDO_GEOMETRY.SDO_GTYPE
SDO_GEOMETRY.SDO_GTYPE は、幾何オブジェクトの幾何タイプコードを表します。
例:
obclient [SYS]> SELECT SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(10, 50, NULL), NULL, NULL).SDO_GTYPE AS test_sdo_gtype FROM dual;
戻り値は次のとおりです:
+----------------+
| TEST_SDO_GTYPE |
+----------------+
| 2001 |
+----------------+
1 row in set
SDO_GEOMETRY.SDO_SRID
SDO_GEOMETRY.SDO_SRID は、幾何オブジェクトの座標系の識別子(SRID)を表します。
例:
obclient [SYS]> SELECT SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL).SDO_SRID AS test_sdo_srid FROM dual;
戻り値は次のとおりです:
+---------------+
| TEST_SDO_SRID |
+---------------+
| 4326 |
+---------------+
1 row in set
SDO_GEOMETRY.SDO_POINT
SDO_GEOMETRY.SDO_POINT は、幾何オブジェクトの点座標を表し、X、Y、およびオプションのZ座標を含みます。SDO_GEOMETRY の SDO_POINT サブプロパティにアクセスすることで、これらのサブプロパティの値を取得できます。
SDO_POINT サブプロパティは以下のとおりです:
SDO_GEOMETRY.SDO_POINT.X:幾何オブジェクトのX座標を表します。SDO_GEOMETRY.SDO_POINT.Y:幾何オブジェクトのY座標を表します。SDO_GEOMETRY.SDO_POINT.Z:幾何オブジェクトのオプションのZ座標を表します。Z座標はオプションであり、すべての幾何オブジェクトにZ値が含まれているわけではありません。
例:
SDO_POINTプロパティにアクセスして、X、Y、Z座標を取得します。obclient [SYS]> SELECT SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL).SDO_POINT AS test_sdo_point FROM dual;実行結果は次のとおりです:
+------------------------------+ | TEST_SDO_POINT | +------------------------------+ | SDO_POINT_TYPE(12, 14, NULL) | +------------------------------+ 1 row in setSDO_POINTの X プロパティにアクセスします。obclient [SYS]> SELECT SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL).SDO_POINT.X AS test_sdo_point_x FROM dual;実行結果は次のとおりです:
+------------------+ | TEST_SDO_POINT_X | +------------------+ | 12 | +------------------+ 1 row in setSDO_POINTの Y プロパティにアクセスします。obclient [SYS]> SELECT SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL).SDO_POINT.Y AS test_sdo_point_y FROM dual;実行結果は次のとおりです:
+------------------+ | TEST_SDO_POINT_Y | +------------------+ | 14 | +------------------+ 1 row in setSDO_POINTの Z プロパティにアクセスします。obclient [SYS]> SELECT SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(12, 14, NULL), NULL, NULL).SDO_POINT.Z AS test_sdo_point_z FROM dual;実行結果は次のとおりです:
+------------------+ | TEST_SDO_POINT_Z | +------------------+ | NULL | +------------------+ 1 row in set
SDO_GEOMETRY.SDO_ELEM_INFO
SDO_GEOMETRY.SDO_ELEM_INFO は、幾何オブジェクトの要素情報(例えば、線分や多角形の始点および終点のインデックス)を表します。
例:
obclient [SYS]> SELECT SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ORDINATE_ARRAY(10,105, 15,105, 20,110, 10,110, 10,105)).SDO_ELEM_INFO AS test_sdo_elem_info FROM dual;
実行結果は次のとおりです:
+---------------------------------+
| TEST_SDO_ELEM_INFO |
+---------------------------------+
| SDO_ELEM_INFO_ARRAY(1, 1003, 1) |
+---------------------------------+
1 row in set
SDO_GEOMETRY.SDO_ORDINATES
SDO_GEOMETRY.SDO_ORDINATES は、幾何オブジェクトの座標値配列を表します。
例:
obclient [SYS]> SELECT SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ORDINATE_ARRAY(10,105, 15,105, 20,110, 10,110, 10,105)).SDO_ORDINATES AS test_sdo_ordinates FROM dual;
実行結果は次のとおりです:
+-----------------------------------------------------------------+
| TEST_SDO_ORDINATES |
+-----------------------------------------------------------------+
| SDO_ORDINATE_ARRAY(10, 105, 15, 105, 20, 110, 10, 110, 10, 105) |
+-----------------------------------------------------------------+
1 row in set