Создание слоев из запросов

Здесь нужно сообщать об ошибках в QGIS, с подробным описанием шагов и версии ПО.
Ответить
drrrrr
Участник
Сообщения: 86
Зарегистрирован: 31 янв 2012, 10:51
Репутация: -1204801158

Создание слоев из запросов

Сообщение drrrrr » 31 янв 2012, 12:07

Запросы вида

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

select 1 as id, st_difference(st_buffer(st_point(0,0), 50000), (select geometry from sometable where id=1542)) as geometry
в SQL window плагина DB manager или Query builder (RT SQL Layer) я использовал для создания слоев qgis и до версии qgis-dev-1.9.90-33 включительно этот механизм работал. В последующих версиях - не работает. В журнал пишет какое-то совершенно невразумительное сообщение о ошибочном запросе
Errornous query: SELECT DISTINCT CASE WHEN upper(geometrytype("geom")) IN ('POINT','MULTIPOINT','POINTM','MULTIPOINTM') THEN 'POINT' WHEN upper(geometrytype("geom")) IN ('LINESTRING','MULTILINESTRING','LINESTRINGM','MULTILINESTRINGM') THEN 'LINESTRING' WHEN upper(geometrytype("geom")) IN ('POLYGON','MULTIPOLYGON','POLYGONM','MULTIPOLYGONM') THEN 'POLYGON' END, srid("geom") FROM ""."" returned 7 [ERROR: zero-length delimited identifier at or near """"
LINE 1: ...'MULTIPOLYGONM') THEN 'POLYGON' END, srid("geom") FROM "".""
^
]
При этом запрос возвращает искомые поля id и геометрии, ошибка возникает когда я пытаюсь подгрузить результаты запроса как слой.
То же самое происходит даже если запрос не содержит обращения к таблицам postgresql, например select 1 as id, st_point(0,0) as geom.
Откатываюсь на версию qgis-dev-1.9.90-33 - все работает.
Использую PostgreSQL 8.4.8 + PostGIS 1.5

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Создание слоев из запросов

Сообщение Voltron » 31 янв 2012, 16:19

Проверьте на последней ночной сборке, эту (или похожую) ошибку уже исправляли

drrrrr
Участник
Сообщения: 86
Зарегистрирован: 31 янв 2012, 10:51
Репутация: -1204801158

Re: Создание слоев из запросов

Сообщение drrrrr » 31 янв 2012, 17:44

В сегодняшней сборке (1.9.90-50) эта ошибка, увы, наличествует. Вместе с этой с этой ошибкой обратил внимание на то, что стал заметно дольше работать диалог добавления слоев postgis - теперь qgis явно дожидается определения типа геометрии для всех таблиц, запись о которых отсутствует в geometry_columns (или тип геометрии не является производным от поддерживаемых POINT, LINESTRING, POLYGON) и первичного ключа в таблице. Теперь qgis при открытии проекта отвергает слои, созданные по запросам (текущая тема форума) поскольку, похоже, нет явного указания первичного ключа, а также представления (views) postgresql, созданные из таблиц with OIDS, поскольку в них первичного ключа также нет. В прежних версиях (до 1.9.90-33) такого контроля не было.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Создание слоев из запросов

Сообщение Максим Дубинин » 31 янв 2012, 17:57

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

мы могли бы сделать на своей, но во-первых это время, во-вторых у нас другая версия постгис.
пристегивайтесь, турбулентность прямо по курсу

drrrrr
Участник
Сообщения: 86
Зарегистрирован: 31 янв 2012, 10:51
Репутация: -1204801158

Re: Создание слоев из запросов

Сообщение drrrrr » 31 янв 2012, 18:08

Дык на ошибку жалуется не postgis ведь.
Попробуйте создать слой по запросу через DB manager
select 1 as id, st_point(0,0) as geom
Постгис по запросу возвращает поле int, годящееся в качестве ключа и валидное поле геометрии, а вот qgis такой слой отвергает.
Если этого недостаточно - пришлю базу.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Создание слоев из запросов

Сообщение Voltron » 31 янв 2012, 19:56

drrrrr писал(а):Попробуйте создать слой по запросу через DB manager
select 1 as id, st_point(0,0) as geom
Постгис по запросу возвращает поле int, годящееся в качестве ключа и валидное поле геометрии, а вот qgis такой слой отвергает
Создал, загрузил слой в QGIS, ошибок не было. Проверял на 1.8

sdikiy
Участник
Сообщения: 54
Зарегистрирован: 15 янв 2011, 23:03
Репутация: 1
Откуда: Ukraine

Re: Создание слоев из запросов

Сообщение sdikiy » 31 янв 2012, 20:51

Voltron писал(а): Создал, загрузил слой в QGIS, ошибок не было. Проверял на 1.8
в самом первом посте автор четко сказал:
drrrrr писал(а):Откатываюсь на версию qgis-dev-1.9.90-33 - все работает.
Использую PostgreSQL 8.4.8 + PostGIS 1.5

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Создание слоев из запросов

Сообщение Voltron » 02 фев 2012, 10:32

drrrrr, проверил на 24bf0baee5 — работает. Видимо, уже исправили.

drrrrr
Участник
Сообщения: 86
Зарегистрирован: 31 янв 2012, 10:51
Репутация: -1204801158

Re: Создание слоев из запросов

Сообщение drrrrr » 02 фев 2012, 13:26

Посмотрел - точно исправили. Здорово. А то я как-то привык создавать такие динамические слои для всяких слоев масок и технических, санитарных и прочих буферных зон и отказываться от такого удобства совсем не хочется. Да и неприятно, когда возвращаешься к каким-то старым проектам - а там слоев не хватает и нужно вспоминать каких именно. Откатиться на работающую версию можно было - но там чего-то поменяли с хранением настроек и теперь в старой версии не видны плагины и пропала стилистика слоев по умолчанию. И с этим тоже можно разобраться, но на все нет времени.
Спасибо.

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: Создание слоев из запросов

Сообщение Voltron » 02 фев 2012, 13:48

drrrrr писал(а):Откатиться на работающую версию можно было - но там чего-то поменяли с хранением настроек и теперь в старой версии не видны плагины и пропала стилистика слоев по умолчанию.
Если будет возможность, дайте более подробное описание этих проблем.

Ответить

Вернуться в «Ошибки QGIS»

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

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