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