Oracle - преобразование SDO_GEOMETRY в WKT?

Я очень новичок в оракуле пространства.

У меня есть пространственная таблица с одним столбцом SDO_GEOMETRY. После вставки данных 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)

Почему я получаю ноль здесь? Разве это не должно отображать координаты точек?

2 ответа

Слишком долго для комментария - не уверен, почему он не работает для вас, но я не могу воспроизвести ваши результаты:

Установка 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 ( Источник - Siva Ravada-Oracle):

Oracle Express не имеет Javavm в базе данных, и процедура преобразования WKT нуждается в этом, поскольку эта функция реализована в виде хранимых процедур Java. Таким образом, эти процедуры WKT не поддерживаются в Express Edition.

Вы по-прежнему можете построить свой собственный WKT следующим образом (для очков):

SELECT name, 'POINT ('||t.X||' '||t.Y||')' AS point FROM NEW_TEST p, TABLE(SDO_UTIL.GETVERTICES(p.GEOM)) t;
Другие вопросы по тегам