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;