35.25 SDO_UTIL.FROM_WKTGEOMETRY

書式

SDO_UTIL.FROM_WKTGEOMETRY(
     geometry  IN CLOB,
     srid      IN NUMBER DEFAULT NULL
     ) RETURN SDO_GEOMETRY;

または

SDO_UTIL.FROM_WKTGEOMETRY(
     geometry  IN VARCHAR2,
     srid      IN NUMBER DEFAULT NULL
     ) RETURN SDO_GEOMETRY;

説明

Well-Known Text (WKT)またはExtended Well-Known Text (EWKT)形式のジオメトリを空間ジオメトリ・オブジェクトに変換します。

パラメータ

geometry

SDO_GEOMETRY形式に変換する、WKT形式のジオメトリを指定します。

srid

入力ジオメトリを記述するオプションのSRID。指定した値は、入力ジオメトリのSRID指定よりも優先されます。

使用上のノート

ノート:

  • SDO_UTIL.FROM_WKTGEOMETRYファンクションは、入力ジオメトリ(WKT形式)内の誤った輪の回転を自動的に検証および修正します。検証プロセスでは、必要に応じて、修正された方向を正確に反映するように、結果のSDO_GEOMETRYオブジェクトのSDO_GTYPE属性も更新されます。
  • SDO_UTIL.FROM_WKTGEOMETRYファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでOracle JVMが有効になっている場合にのみサポートされます。Oracle JVMを有効にするには、Oracle Autonomous Databaseサーバーレスの使用Oracle Javaの使用で詳細を参照してください。

入力ジオメトリは、Well-Known Text ()形式またはEWKT形式にすることができます。結果は、入力ジオメトリを表すために必要な最も適した最小限のSDO_GEOMETRY型になります。

このファンクションは、『ISO 13249-3, Information technology - Database languages - SQL Multimedia and Application Packages - Part 3: Spatial』のSQL Multimedia勧告を基にしています。

SDO_GEOMETRYオブジェクトをWKT形式のCLOBに変換するには、SDO_UTIL.TO_WKTGEOMETRYファンクションを使用します。(得られたCLOBは、SQLファンクションTO_CHARを使用して、VARCHAR2型に変換できます。)

次の例は、WKBおよびWKT形式への変換と逆変換を実行し、WKBおよびWKTジオメトリが有効かどうかを確認しています。(例では、「空間データの挿入、索引付けおよび問合せの例」の特にCOLA_MARKETS表のcola_bジオメトリについて、その定義およびデータを使用しています。)

DECLARE
  wkbgeom BLOB;
  wktgeom CLOB;
  val_result VARCHAR2(5);
  geom_result SDO_GEOMETRY;
  geom SDO_GEOMETRY;
BEGIN
SELECT c.shape INTO geom FROM cola_markets c WHERE c.name = 'cola_b';
 
-- To WBT/WKT geometry
wkbgeom := SDO_UTIL.TO_WKBGEOMETRY(geom);
wktgeom := SDO_UTIL.TO_WKTGEOMETRY(geom);
DBMS_OUTPUT.PUT_LINE('To WKT geometry result = ' || TO_CHAR(wktgeom));
 
-- From WBT/WKT geometry
geom_result := SDO_UTIL.FROM_WKBGEOMETRY(wkbgeom);
geom_result := SDO_UTIL.FROM_WKTGEOMETRY(wktgeom);
 
-- Validate WBT/WKT geometry
val_result := SDO_UTIL.VALIDATE_WKBGEOMETRY(wkbgeom);
DBMS_OUTPUT.PUT_LINE('WKB validation result = ' || val_result);
val_result := SDO_UTIL.VALIDATE_WKTGEOMETRY(wktgeom);
DBMS_OUTPUT.PUT_LINE('WKT validation result = ' || val_result);
 
END;/
 
To WKT geometry result = POLYGON ((5.0 1.0, 8.0 1.0, 8.0 6.0, 5.0 7.0, 5.0 1.0))
WKB validation result = TRUE                                                    
WKT validation result = TRUE