私は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になるのはなぜですか?座標点を表示するべきではありませんか?
コメントには長すぎます-なぜそれがあなたのために機能しないのかわかりませんが、私はあなたの結果を再現することはできません:
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)
関数 SDO_UTIL.TO_WKTGEOMETRY
Expressバージョン( ソース -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;