Страница 1 из 3
					
				Добавление списка слоёв в приложение PyQGIS
				Добавлено: 25 фев 2011, 22:48
				 updates-bot
				Обсуждение статьи 
"Добавление списка слоёв в приложение PyQGIS"
 
 http://gis-lab.info/qa/qgis-legend.html 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 06 фев 2012, 22:06
				 real673
				Подскажите пожалуйста почему у меня не открывается не обин слой (шейповский файл) сам пример работает но я не могу его открыть и вывести на экран((
			 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 18:32
				 Voltron
				Четче можете сформулировать? Фраза
real673 писал(а):Пример работает, но я не могу его открыть и вывести на экран»
непонятная (так работает или нет?) и не описывает проблему.
UPD: Озвучьте используемую версию QGIS. Думаю, вы видели предупреждение
Работоспособность примеров проверена на QGIS 1.7. В новых версиях QGIS могут быть внесены изменения, делающие данные примеры неработоспособным.
Предполагаю, что причина именно в этом
 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 19:05
				 real673
				Пример работает но в легенде нет списка слоев. Использую QGIS 1.9  а как в таком случае подключиться к 1.7
			 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 19:55
				 real673
				при открытии и добавлении нового слоя пишет следующее
			
		
				
			 
- Снимок.JPG (102.7 КБ) 28035 просмотров
  
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 20:09
				 Voltron
				real673 писал(а):Использую QGIS 1.9  а как в таком случае подключиться к 1.7
Установить QGIS 1.7, прописать пути к библиотекам в .bat файле
 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 20:22
				 real673
				просто я не запуская .bat файл 
я через командную строку запускаю python mainwindow.py
			 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 20:26
				 real673
				как видно из скриншота у меня ошибки в 3 строчках я их проверил но ничего не нашел
			 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 20:49
				 Voltron
				Ага, вот и причина. В 1.9.90 по умолчанию используется новая символика, с которой этот виджет не работает
			 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 20:50
				 Voltron
				real673 писал(а):просто я не запуская .bat файл 
я через командную строку запускаю python mainwindow.py
ну тогда просто выставить переменные окружения соответствующим образом
 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 20:54
				 real673
				вставил  set QGISHOME=c:\OSGeo4W\bin    вроде там находится QGIS 1.7
получил следующиее
			
		
				
			 
- Снимок.JPG (19.5 КБ) 28020 просмотров
  
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 21:23
				 Voltron
				real673 писал(а):вставил  set QGISHOME=c:\OSGeo4W\bin    вроде там находится QGIS 1.7
Не-не-не... В bin QGIS нет, и в этом легко убедиться, открыв этот каталог в файловом менеджере. Там только батник лежит. QGIS ищите где-то в дебрях apps, что-то вроде %OSGEO_ROOT%\apps\qgis17. Кроме того, нужно еще и правильно задать PATH и PYTHONPATH, более подробно это описано в первой статье. Кстати, там как раз объясняется, почему лучше использовать bat-файл для запуска приложения.
P.S.: вместо вставки скришнотов, можно просто копировать текст из командной строки. Это быстрее и проще.
 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 21:31
				 real673
				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()
			 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 07 фев 2012, 22:14
				 Voltron
				Ну вот, после беглого просмотра истории коммитов все встало на свои места.
Статья писалась с использованием ночных сборок (qgis-dev), которые в то время уже имели версию 1.7, но по умолчанию все еще использовали старую символику. Новую символику сделали вариантом по умолчанию позже, статья к этому моменту уже была опубликована (и на момент публикации все работало). Поэтому даже на релизной версии 1.7 оригинальный виджет легенды работать не будет.
Собственно у вас сейчас три варианта:
- к слоям подкладывать файл стиля (qml) для старой символики. Такие файлы можно предварительно сделать в QGIS. Минусы: прежду чем загрузить файлы в приложение для них нужно создать стиль старой символики; рано или поздно старую символику удалят.
- доработать виджет, чтобы он автоматически принудительно загружал слои с использованием старой символики. Плюс: доработка минимальна (буквально 2-3 строки кода). Минусы: старая символика не такая навороченная и когда-то ее уберут
- самый правильный вариант — доработать виджет, чтобы он поддерживал как новую, так и старую символику.
 
			
					
				Re: Добавление списка слоёв в приложение PyQGIS
				Добавлено: 08 фев 2012, 15:36
				 real673
				Voltron писал(а):Ну вот, после беглого просмотра истории коммитов все встало на свои места.
Статья писалась с использованием ночных сборок (qgis-dev), которые в то время уже имели версию 1.7, но по умолчанию все еще использовали старую символику. Новую символику сделали вариантом по умолчанию позже, статья к этому моменту уже была опубликована (и на момент публикации все работало). Поэтому даже на релизной версии 1.7 оригинальный виджет легенды работать не будет.
Собственно у вас сейчас три варианта:
- к слоям подкладывать файл стиля (qml) для старой символики. Такие файлы можно предварительно сделать в QGIS. Минусы: прежду чем загрузить файлы в приложение для них нужно создать стиль старой символики; рано или поздно старую символику удалят.
- доработать виджет, чтобы он автоматически принудительно загружал слои с использованием старой символики. Плюс: доработка минимальна (буквально 2-3 строки кода). Минусы: старая символика не такая навороченная и когда-то ее уберут
- самый правильный вариант — доработать виджет, чтобы он поддерживал как новую, так и старую символику.
 
как я понимаю надо использовать rendererV2 .
мне нужно просто поменять их или что то дописать?