Подключение таблиц из ORACLE без геодезии

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 17 апр 2017, 10:20

Добрый день, уважаемые знатоки!
В QGIS подключаю таблицу ORACLE без геодезии и пробую загрузить ее, как векторный слой. Таблица загружается, но, не в виде векторного слоя, а как таблица атрибутивных данных. В таблице есть поля, в которых записаны X, Y объектов. Если сохранить такую таблицу в виде CSV-файла и потом загрузить его, то эти поля видны и их можно использовать. Кроме этого, проходит и такой вариант с CSV-файлом: создаю в нем еще поле Geodezy, в котором пробовал разные варианты:
- POINT(484921.445346225 4957044.50194082)
- LINESTRING( 484921.445346225 4957044.50194082, 484888.76409625 4957007.28315911)
- POLYGON ((484975.9 4957049.32,484976.6 4957049.32,484976.6 4957050.14,484975.9 4957050.14,484975.9 4957049.32))
В случае использования таких вариантов для CSV-файла поле Geodezy определяется автоматически, а вот при чтении таблицы ORACLE ни один из приведенных вариантов не "катит". Либо для ORACLE надо как-то по-другому создавать поле геодезии, либо нужны какие-то другие "приседания".
Подскажите, плиз.

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Подключение таблиц из ORACLE без геодезии

Сообщение trir » 17 апр 2017, 10:58

геометрия должна быть - wkb

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Подключение таблиц из ORACLE без геодезии

Сообщение freeExec » 17 апр 2017, 14:38

А если с помощью калькулятора полей создать столбец с геометрией, слой станет векторным?

vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Re: Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 17 апр 2017, 16:44

Пробую создать поле с геометрией через калькулятор полей. Предпросмотр показывает, что X,Y определены правильно, а потом при "Обновить все" выдается ошибка: "Ошибка обработки. Не найден корневой элемент."
Либо я что-то делаю не так, либо геометрию невозможно увидеть как поле в таблице атрибутов?
Вложения
2017-04-17_162537.png
2017-04-17_162537.png (103.97 КБ) 8523 просмотра

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Подключение таблиц из ORACLE без геодезии

Сообщение freeExec » 17 апр 2017, 16:55

Может не из всех полей можно создать геометрию, ну где-нибудь пусто или запятая не такая. Попробуйте оставить только 3 строки, чтобы на верняка глазами было видно.

vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Re: Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 17 апр 2017, 17:43

Поле с геометрией создалось. Наверное, теперь эту таблицу можно как-то трансформировать в векторный слой. Хотелось бы оставить присоединенной оракловую таблицу, и вот зачем. В исходном виде в ней хранится много данных о найденных дефектах на трубе и пока дефект не отремонтирован, он на карте показывается одним стилем. Как только его отремонтируют, он показывается другим стилем. Все это я уже сделал с использованием csv-формата, хотелось бы показывать такие слои непосредственно из оракловой таблицы. За наводку про калькулятор полей - Спасибо.
Вложения
2017-04-17_173132.png
2017-04-17_173132.png (93.93 КБ) 8500 просмотров

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Подключение таблиц из ORACLE без геодезии

Сообщение trir » 17 апр 2017, 18:37

надо просто к таблице в Oracle добавить поле с wkb геометрией

vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Re: Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 18 апр 2017, 11:28

нашел следующее:
ALTER TABLE my_geo_test ADD COLUMN geo_data BLOB NOT NULL;
INSERT INTO my_geo_test (...., geo_data) VALUES (...., GeomFromText('POINT(1 1)'));
INSERT INTO my_geo_test (...., geo_data) VALUES (...., GeomFromWKB(X'0x0101000000000000000000F03F000000000000F03F'));

первый вариант более понятен, т.к. X, Y берутся из имеющихся полей из таблицы ORACLE (в приведенном примере - my_geo_test). а как сформировать поле geo_data для типа wkb, о которой уже дважды мне подсказывают, не знаю. Подскажите, кто знает, примером или ссылкой.

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Подключение таблиц из ORACLE без геодезии

Сообщение trir » 18 апр 2017, 11:47


vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Re: Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 20 апр 2017, 11:50

Сделал контрольный пример так:
CREATE TABLE RT_OBJECTS (
ID NUMBER(12) NOT NULL
,STNAME VARCHAR2(255) NULL
,GEOM BLOB
,SRID NUMBER NULL
,CONSTRAINT RT_OBJECTS_PK PRIMARY KEY (ID)
);
INSERT INTO RT_OBJECTS (ID,STNAME,GEOM,SRID) VALUES (1,'Feature 1',SDO_UTIL.TO_WKBGEOMETRY(SDO_GEOMETRY(2001,8307,SDO_POINT_TYPE(484950.74,4957057.70,NULL),null,null)),8307);
INSERT INTO RT_OBJECTS (ID,STNAME,GEOM,SRID) VALUES (2,'Feature 1',SDO_UTIL.TO_WKBGEOMETRY(SDO_GEOMETRY(2001,8307,SDO_POINT_TYPE(475942.47,4934605.48,NULL),NULL,NULL)),8307);
INSERT INTO RT_OBJECTS (ID,STNAME,GEOM,SRID) VALUES (3,'Feature 1',SDO_UTIL.TO_WKBGEOMETRY(SDO_GEOMETRY(2001,8307,SDO_POINT_TYPE(466321.39,4911230.56,NULL),NULL,NULL)),8307);
Посмотрел через SQL+, 3 записи, а когда подключаю слой ORACLE Spatial, то поле с геометрией не видно. Может быть из-за того, что поле с геометрией (GEOM) объявлено BLOB? Если даю ему тип SDO_GEOMETRY, тогда записи не формируются. Где может быть "засада"? Подскажите, плиз, вчера пол-дня ушло, пока по разным ссылкам смотрел, может для знающего спеца в этом вопросе делов на 5 мин, а я еще только начал осваивать qgis.
Вложения
SQL_1.jpg
WKB формат
SQL_1.jpg (32.44 КБ) 8380 просмотров
SQL_2.jpg
WKT формат
SQL_2.jpg (43.7 КБ) 8380 просмотров
2017-04-20_113129.png
Подключение пользовательской таблицы. Поле с геометрией (RT_OBJECTS.GEOM) не определено??? геометрии
2017-04-20_113129.png (73.01 КБ) 8380 просмотров

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Подключение таблиц из ORACLE без геодезии

Сообщение trir » 20 апр 2017, 11:55

попробуй загрузить данные в Oracle из QGIS, и посмотри как они запишутся

vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Re: Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 20 апр 2017, 12:34

В Oracle-таблицу записи пишутся sql-запросом, я привел привел текст создания таблицы, и текст ее заполнения данными. Скорее всего, собака зарыта в заполнении поля GEOM, возможно, в фунции SDO_UTIL.TO_WKBGEOMETRY неправильно указал параметры. Потому что, и геометрия не определена и еще SRID тоже пустой, в каком-то примере взял часть запроса, там было указано 8307, а что это означает, не знаю, наверняка есть где-нибудь таблица, в которой расшифровываются эти значения.

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Подключение таблиц из ORACLE без геодезии

Сообщение trir » 20 апр 2017, 12:39

8307
попробуй использовать родную геометрию

Код: Выделить всё

SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(51.702814,32.624736,NULL),NULL,NULL)

vlad_s
Интересующийся
Сообщения: 28
Зарегистрирован: 09 мар 2017, 11:50
Репутация: 0

Re: Подключение таблиц из ORACLE без геодезии

Сообщение vlad_s » 20 апр 2017, 15:08

Не помогло: перезагрузил данные, подключаю таблицу, в результате - поле геометрии, SRID пустые.
Может быть надо в какую-нибудь таблицу отдельно прописывать поле геометрии?

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Подключение таблиц из ORACLE без геодезии

Сообщение trir » 20 апр 2017, 15:14

попробуй записать данные в oracle из QGIS/GDAL
SRID может быть пустым, это не кретично

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей