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