GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


Добавление списка слоёв в приложение PyQGIS

Обсуждение материалов сайта: вопросы, замечания, предложения

Добавление списка слоёв в приложение PyQGIS

Сообщение updates-bot » 25 фев 2011, 23:48

Обсуждение статьи "Добавление списка слоёв в приложение PyQGIS"

http://gis-lab.info/qa/qgis-legend.html
  • 0

updates-bot
Bot
 
Зарегистрирован: 04 фев 2008
 
Сообщения: 276
Репутация: 2

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 06 фев 2012, 23:06

Подскажите пожалуйста почему у меня не открывается не обин слой (шейповский файл) сам пример работает но я не могу его открыть и вывести на экран((
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение Voltron » 07 фев 2012, 19:32

Четче можете сформулировать? Фраза
real673 писал(а):Пример работает, но я не могу его открыть и вывести на экран»

непонятная (так работает или нет?) и не описывает проблему.

UPD: Озвучьте используемую версию QGIS. Думаю, вы видели предупреждение
Работоспособность примеров проверена на QGIS 1.7. В новых версиях QGIS могут быть внесены изменения, делающие данные примеры неработоспособным.

Предполагаю, что причина именно в этом
  • 0

Voltron
Гуру
 
Зарегистрирован: 29 мар 2007
Откуда: Ukraine (на карте)
 
Сообщения: 2627
Репутация: 32
Статьи: 31
Проекты: 4/1

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 07 фев 2012, 20:05

Пример работает но в легенде нет списка слоев. Использую QGIS 1.9 а как в таком случае подключиться к 1.7
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 07 фев 2012, 20:55

при открытии и добавлении нового слоя пишет следующее
Снимок.JPG
Снимок.JPG (102.7 КБ) Просмотров: 12574
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение Voltron » 07 фев 2012, 21:09

real673 писал(а):Использую QGIS 1.9 а как в таком случае подключиться к 1.7

Установить QGIS 1.7, прописать пути к библиотекам в .bat файле
  • 0

Voltron
Гуру
 
Зарегистрирован: 29 мар 2007
Откуда: Ukraine (на карте)
 
Сообщения: 2627
Репутация: 32
Статьи: 31
Проекты: 4/1

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 07 фев 2012, 21:22

просто я не запуская .bat файл
я через командную строку запускаю python mainwindow.py
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 07 фев 2012, 21:26

как видно из скриншота у меня ошибки в 3 строчках я их проверил но ничего не нашел
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение Voltron » 07 фев 2012, 21:49

Ага, вот и причина. В 1.9.90 по умолчанию используется новая символика, с которой этот виджет не работает
  • 0

Voltron
Гуру
 
Зарегистрирован: 29 мар 2007
Откуда: Ukraine (на карте)
 
Сообщения: 2627
Репутация: 32
Статьи: 31
Проекты: 4/1

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение Voltron » 07 фев 2012, 21:50

real673 писал(а):просто я не запуская .bat файл
я через командную строку запускаю python mainwindow.py

ну тогда просто выставить переменные окружения соответствующим образом
  • 0

Voltron
Гуру
 
Зарегистрирован: 29 мар 2007
Откуда: Ukraine (на карте)
 
Сообщения: 2627
Репутация: 32
Статьи: 31
Проекты: 4/1

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 07 фев 2012, 21:54

вставил set QGISHOME=c:\OSGeo4W\bin вроде там находится QGIS 1.7

получил следующиее
Снимок.JPG
Снимок.JPG (19.5 КБ) Просмотров: 12559
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение Voltron » 07 фев 2012, 22:23

real673 писал(а):вставил set QGISHOME=c:\OSGeo4W\bin вроде там находится QGIS 1.7

Не-не-не... В bin QGIS нет, и в этом легко убедиться, открыв этот каталог в файловом менеджере. Там только батник лежит. QGIS ищите где-то в дебрях apps, что-то вроде %OSGEO_ROOT%\apps\qgis17. Кроме того, нужно еще и правильно задать PATH и PYTHONPATH, более подробно это описано в первой статье. Кстати, там как раз объясняется, почему лучше использовать bat-файл для запуска приложения.

P.S.: вместо вставки скришнотов, можно просто копировать текст из командной строки. Это быстрее и проще.
  • 0

Voltron
Гуру
 
Зарегистрирован: 29 мар 2007
Откуда: Ukraine (на карте)
 
Сообщения: 2627
Репутация: 32
Статьи: 31
Проекты: 4/1

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 07 фев 2012, 22:31

set QGISHOME=c:\OSGeo4W\apps\qgis
set PYTHONPATH=c:\OSGeo4W\apps\qgis\python
set PATH=c:\OSGeo4W\apps\qgis\bin;%PATH%

и получил
File "C:\OSGeo4W\qgis-legend\legend.py", line 298, in addLayerToLegend
legendLayer = LegendItem( self, QgsMapCanvasLayer( canvasLayer ) )
File "C:\OSGeo4W\qgis-legend\legend.py", line 54, in __init__
self.vectorLayerSymbology( self.canvasLayer.layer() )
File "C:\OSGeo4W\qgis-legend\legend.py", line 91, in vectorLayerSymbology
sym = renderer.symbols()
  • 0

real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение Voltron » 07 фев 2012, 23:14

Ну вот, после беглого просмотра истории коммитов все встало на свои места.

Статья писалась с использованием ночных сборок (qgis-dev), которые в то время уже имели версию 1.7, но по умолчанию все еще использовали старую символику. Новую символику сделали вариантом по умолчанию позже, статья к этому моменту уже была опубликована (и на момент публикации все работало). Поэтому даже на релизной версии 1.7 оригинальный виджет легенды работать не будет.

Собственно у вас сейчас три варианта:
  1. к слоям подкладывать файл стиля (qml) для старой символики. Такие файлы можно предварительно сделать в QGIS. Минусы: прежду чем загрузить файлы в приложение для них нужно создать стиль старой символики; рано или поздно старую символику удалят.
  2. доработать виджет, чтобы он автоматически принудительно загружал слои с использованием старой символики. Плюс: доработка минимальна (буквально 2-3 строки кода). Минусы: старая символика не такая навороченная и когда-то ее уберут
  3. самый правильный вариант — доработать виджет, чтобы он поддерживал как новую, так и старую символику.
  • 0

Voltron
Гуру
 
Зарегистрирован: 29 мар 2007
Откуда: Ukraine (на карте)
 
Сообщения: 2627
Репутация: 32
Статьи: 31
Проекты: 4/1

Re: Добавление списка слоёв в приложение PyQGIS

Сообщение real673 » 08 фев 2012, 16:36

Voltron писал(а):Ну вот, после беглого просмотра истории коммитов все встало на свои места.

Статья писалась с использованием ночных сборок (qgis-dev), которые в то время уже имели версию 1.7, но по умолчанию все еще использовали старую символику. Новую символику сделали вариантом по умолчанию позже, статья к этому моменту уже была опубликована (и на момент публикации все работало). Поэтому даже на релизной версии 1.7 оригинальный виджет легенды работать не будет.

Собственно у вас сейчас три варианта:
  1. к слоям подкладывать файл стиля (qml) для старой символики. Такие файлы можно предварительно сделать в QGIS. Минусы: прежду чем загрузить файлы в приложение для них нужно создать стиль старой символики; рано или поздно старую символику удалят.
  2. доработать виджет, чтобы он автоматически принудительно загружал слои с использованием старой символики. Плюс: доработка минимальна (буквально 2-3 строки кода). Минусы: старая символика не такая навороченная и когда-то ее уберут
  3. самый правильный вариант — доработать виджет, чтобы он поддерживал как новую, так и старую символику.

как я понимаю надо использовать rendererV2 .

мне нужно просто поменять их или что то дописать?
  • 0

Последний раз редактировалось real673 08 фев 2012, 20:27, всего редактировалось 2 раз(а).
real673
Интересующийся
 
Зарегистрирован: 06 фев 2012
 
Сообщения: 33
Репутация: 0

След.

Вернуться в Материалы сайта

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

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


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).