web-dev-qa-db-ja.com

Oracle-SDO_GEOMETRYをWKTに変換しますか?

私はOracleSpatialに非常に慣れていません。

SDO_GEOMETRY列が1つある空間テーブルがあります。このテーブルにPOINTデータを挿入した後、WKT形式でデータを取得したいと思います。

これが私がしたことです:

データの挿入-

INSERT INTO new_test (name, geom) VALUES (
'Test', 
SDO_GEOMETRY(
             2001,
             4326, 
             SDO_POINT_TYPE(12,14,NULL), 
             NULL, 
             NULL));

データの取得-

SELECT NAME, SDO_UTIL.TO_WKTGEOMETRY(GEOM) AS point FROM NEW_TEST;

出力-

NAME | POINT
-------------
Test | (null)

ここでnullになるのはなぜですか?座標点を表示するべきではありませんか?

5
user8143879

コメントには長すぎます-なぜそれがあなたのために機能しないのかわかりませんが、私はあなたの結果を再現することはできません:

Oracleセットアップ

CREATE TABLE new_test ( name varchar2(20), geom SDO_GEOMETRY );

INSERT INTO new_test (name, geom)
VALUES (
  'Test', 
  SDO_GEOMETRY( 2001, 4326, SDO_POINT_TYPE(12,14,NULL), NULL, NULL)
);

クエリ

SELECT NAME, SDO_UTIL.TO_WKTGEOMETRY(GEOM) AS point FROM NEW_TEST;

出力

NAME POINT                                                                          
---- -----------------
Test POINT (12.0 14.0)
2
MT0

関数 SDO_UTIL.TO_WKTGEOMETRYExpressバージョンソース -SivaRavada-Oracleでは利用できないようです):

Oracle ExpressのデータベースにはJavavmがなく、機能はJavaストアドプロシージャとして実装されているため、WKT変換ルーチンはこれを必要とします。したがって、これらのWKTルーチンはExpressエディションではサポートされていません。

あなたはまだこのようにあなた自身のWKTを構築することができます(ポイントのために):

SELECT name, 'POINT ('||t.X||' '||t.Y||')' AS point FROM NEW_TEST p, TABLE(SDO_UTIL.GETVERTICES(p.GEOM)) t;
2
Lars