<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.gis-lab.info/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS</id>
	<title>Добавление списка слоёв в приложение PyQGIS - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gis-lab.info/index.php?action=history&amp;feed=atom&amp;title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS"/>
	<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;action=history"/>
	<updated>2026-04-03T22:35:25Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;diff=5960&amp;oldid=prev</id>
		<title>Voltron в 07:34, 22 июля 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;diff=5960&amp;oldid=prev"/>
		<updated>2012-07-22T07:34:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 09:34, 22 июля 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l143&quot;&gt;Строка 143:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 143:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Также виджет предоставляет несколько полезных методов, с помощью которых можно&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Также виджет предоставляет несколько полезных методов, с помощью которых можно&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;перебрать все слои&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ul&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;li&amp;gt;&lt;/ins&gt;перебрать все слои&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;for layer in self.legend.layers:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/del&gt;# сделать что-то со слоем&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;for layer in self.legend.layers:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/ins&gt;# сделать что-то со слоем&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/li&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;скрыть или отобразить все слои&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;li&amp;gt;&lt;/ins&gt;скрыть или отобразить все слои&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;def showAllLayers( self ):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;def showAllLayers( self ):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/del&gt;self.legend.setStatusForAllLayers( True )&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    &lt;/ins&gt;self.legend.setStatusForAllLayers( True )&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/li&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;li&amp;gt;&lt;/ins&gt;получить активный слой&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;получить активный слой &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;return self.legend.activeLayer()&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;return self.legend.activeLayer()&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;обновить символику слоя &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;self.legend.refreshLayerSymbology( layer )&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/li&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;li&amp;gt;&lt;/ins&gt;обновить символику слоя&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;удалить слои по идентификаторам &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;self.legend.removeLayers( layerIds )&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;self.legend.refreshLayerSymbology( layer )&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/li&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;li&amp;gt;&lt;/ins&gt;удалить слои по идентификаторам&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;self.legend.removeLayers( layerIds )&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &amp;lt;/li&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/ul&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Разумеется, это далеко не полный список методов рассматриваемого виджета. Более полное представление о его возможностях можно получить заглянув в файл &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;, код достаточно прозрачный и снабжен комментариями, так что разобраться в нем не составит труда.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Разумеется, это далеко не полный список методов рассматриваемого виджета. Более полное представление о его возможностях можно получить заглянув в файл &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;, код достаточно прозрачный и снабжен комментариями, так что разобраться в нем не составит труда.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key gislabwiki:diff::1.12:old-5958:rev-5960 --&gt;
&lt;/table&gt;</summary>
		<author><name>Voltron</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;diff=5958&amp;oldid=prev</id>
		<title>Voltron в 07:31, 22 июля 2012</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;diff=5958&amp;oldid=prev"/>
		<updated>2012-07-22T07:31:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 09:31, 22 июля 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l171&quot;&gt;Строка 171:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 171:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Ссылки по теме ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Ссылки по теме ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/del&gt;[http://gis-lab.info/qa/qgis-standalone.html Создание приложения на базе набора библиотек QGIS на Python]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[http://gis-lab.info/qa/qgis-standalone.html Создание приложения на базе набора библиотек QGIS на Python]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# &lt;/del&gt;[http://geotux.tuxfamily.org/index.php?option=com_myblog&amp;amp;task=view&amp;amp;id=270&amp;amp;Itemid=59&amp;amp;lang=en Layer list widget for PyQGIS applications]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[http://geotux.tuxfamily.org/index.php?option=com_myblog&amp;amp;task=view&amp;amp;id=270&amp;amp;Itemid=59&amp;amp;lang=en Layer list widget for PyQGIS applications&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [http://gis-lab.info/docs/qgis/ Документация по QGIS&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key gislabwiki:diff::1.12:old-5775:rev-5958 --&gt;
&lt;/table&gt;</summary>
		<author><name>Voltron</name></author>
	</entry>
	<entry>
		<id>https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;diff=5775&amp;oldid=prev</id>
		<title>Voltron: Новая страница: «{{Статья|Опубликована|qgis-legend}} {{Аннотация|Подробное описание процесса подключения списк…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.gis-lab.info/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0_%D1%81%D0%BB%D0%BE%D1%91%D0%B2_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_PyQGIS&amp;diff=5775&amp;oldid=prev"/>
		<updated>2012-07-19T12:44:29Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{Статья|Опубликована|qgis-legend}} {{Аннотация|Подробное описание процесса подключения списк…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Статья|Опубликована|qgis-legend}}&lt;br /&gt;
{{Аннотация|Подробное описание процесса подключения списка слоёв в приложениях на базе QGIS с помощью Python.}}&lt;br /&gt;
&lt;br /&gt;
QGIS помимо готовой пользовательской ГИС является еще и набором библиотек, которые могут быть использованы для создания новых приложений. Мы уже [http://gis-lab.info/qa/qgis-standalone.html рассказывали] о создании самостоятельного отдельного приложения на основе QGIS. К сожалению, при разработке таких приложений некоторые элементы интерфейса необходимо создавать самостоятельно. Один из примеров такого элемента — список загруженных слоёв (иногда неверно называемый легендой).&lt;br /&gt;
&lt;br /&gt;
Данная статья описывает процесс встраивания списка слоёв в приложение PyQGIS. В основе статьи лежит перевод поста «[http://geotux.tuxfamily.org/index.php?option=com_myblog&amp;amp;show=tabla-de-contenido-leyenda-para-aplicaciones-basadas-en-pyqgis.html&amp;amp;Itemid=59 Layer list widget for PyQGIS applications]», сделанного German Carrillo в блоге GeoTux.&lt;br /&gt;
&lt;br /&gt;
Работоспособность примеров проверена на QGIS 1.7. В новых версиях QGIS могут быть внесены изменения, делающие данные примеры неработоспособным.&lt;br /&gt;
&lt;br /&gt;
=== Подготовка ===&lt;br /&gt;
&lt;br /&gt;
Будем исходить из того, что все программное обеспечение установлено при помощи установщика OSGeo4W ([http://gis-lab.info/qa/qgis-osgeo4w.html подробнее]) используя путь по умолчанию &amp;lt;tt&amp;gt;C:\OSGeo4W&amp;lt;/tt&amp;gt;. Кроме самой QGIS со всеми зависимостями, необходимо выбрать следующие пакеты в категории Libs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pyqt4, qt4-devel, qt4-doc, qt4-libs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этих пакетах находятся инструменты разработчика, необходимые библиотеки и документация.&lt;br /&gt;
&lt;br /&gt;
Предполагается, что читатель уже знаком с процессом создания приложений PyQGIS и QGIS Python API. Если это не так, рекомендуем ознакомиться со статьей «[http://gis-lab.info/qa/qgis-standalone.html Создание приложения на базе набора библиотек QGIS на Python]». Для демонстрации основных аспектов работы со списком слоёв мы немного модифицировали пример, рассмотренный в этой статье. Скачать полный код приложения можно [http://gis-lab.info/other/qgis-legend.7z здесь].&lt;br /&gt;
&lt;br /&gt;
=== Общие сведения о виджете ===&lt;br /&gt;
&lt;br /&gt;
Рассматриваемый виджет разработан German Carrillo и является упрощенной версией списка слоёв QGIS. Основное отличие от оригинала — не поддерживается новая символика и отсутствуют группы слоёв.&lt;br /&gt;
&lt;br /&gt;
Вот так выглядит приложение со списком слоёв:&lt;br /&gt;
&lt;br /&gt;
[[Файл:qgis-legend-01.png|center|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
==== Возможности ====&lt;br /&gt;
&lt;br /&gt;
* получение упорядоченного списка слоёв&lt;br /&gt;
* изменение порядка следования слоёв в легенде с соответствующим изменением порядка слоёв карты&lt;br /&gt;
* управление видимостью слоя&lt;br /&gt;
* отображение/изменение символики слоя (рекомендуется создать свой собственный диалог настройки символики, автор виджета предлагает лишь очень простой пример)&lt;br /&gt;
* изменение некоторых параметров слоя&lt;br /&gt;
* загрузка/сохранение стилей (.qml)&lt;br /&gt;
* удаление слоёв&lt;br /&gt;
* интеграция с картой и инструментами, действующими на загруженные слои (Скрыть/Показать все, Удалить все)&lt;br /&gt;
&lt;br /&gt;
Виджет распространяется по условиям [http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2].&lt;br /&gt;
&lt;br /&gt;
=== Подключение легенды к приложению ===&lt;br /&gt;
&lt;br /&gt;
Сначала нужно загрузить [http://downloads.tuxfamily.org/tuxgis/geoblogs/pyqgis_toc/pyqgis_legend.zip архив] и извлечь его содержимое в каталог с приложением. В архиве находится:&lt;br /&gt;
&lt;br /&gt;
* файл &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;, который реализует весь фукционал легенды&lt;br /&gt;
* несколько иконок, необходимых для отображения слоёв разных типов&lt;br /&gt;
* иконки действий для выпадающего меню&lt;br /&gt;
* диалог настройки свойств слоя&lt;br /&gt;
&lt;br /&gt;
==== Инициализация ====&lt;br /&gt;
&lt;br /&gt;
В основном классе нашего приложения импортируем класс &amp;lt;tt&amp;gt;Legend&amp;lt;/tt&amp;gt; из файла &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from legend import Legend&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом же классе создадим новый метод &amp;lt;tt&amp;gt;CreateLegendWidget&amp;lt;/tt&amp;gt;, который будет отвечать за создание плавающего окна и за установку связи между легендой и картой.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def createLegendWidget( self ):&lt;br /&gt;
  # создаем легенду&lt;br /&gt;
  self.legend = Legend( self )&lt;br /&gt;
  self.legend.setCanvas( self.canvas )&lt;br /&gt;
  self.legend.setObjectName( &amp;quot;theMapLegend&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
  # создаем плавающую панель и добавляем к ней легенду&lt;br /&gt;
  self.LegendDock = QDockWidget( &amp;quot;Layers&amp;quot;, self )&lt;br /&gt;
  self.LegendDock.setObjectName( &amp;quot;legend&amp;quot; )&lt;br /&gt;
  self.LegendDock.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )&lt;br /&gt;
  self.LegendDock.setWidget( self.legend )&lt;br /&gt;
  self.LegendDock.setContentsMargins ( 9, 9, 9, 9 )&lt;br /&gt;
  self.addDockWidget( Qt.LeftDockWidgetArea, self.LegendDock )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вызов этого метода необходимо добавить в метод &amp;lt;tt&amp;gt;__init__&amp;lt;/tt&amp;gt; основного класса приложения. Обратите внимание, что создание легенды необходимо выполнять после создания карты (&amp;lt;tt&amp;gt;QgsMapCanvas&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class MainWindow( QMainWindow, Ui_MainWindow ):&lt;br /&gt;
  def __init__( self ):&lt;br /&gt;
    MainWindow.__init__( self )&lt;br /&gt;
&lt;br /&gt;
    # Требуется Qt4 для инициализации пользовательского интерфейса&lt;br /&gt;
    self.setupUi( self )&lt;br /&gt;
    # Создаем карту&lt;br /&gt;
    self.canvas = QgsMapCanvas()&lt;br /&gt;
    ...&lt;br /&gt;
    # создаем легенду&lt;br /&gt;
    self.createLegendWidget()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Использование ====&lt;br /&gt;
&lt;br /&gt;
Виджет легенды использует несколько иконок: иконки для разных типов слоёв и иконки для контекстного меню слоя. Чтобы они отображались необходимо скомпилировать входящий в архив файл &amp;lt;tt&amp;gt;resources.qrc&amp;lt;/tt&amp;gt; командой&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pyrcc4 resources.qrc -o resources_rc.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файле &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt; уже присутствует ссылка на сгенерированный таким образом файл. Если приложение использует свой собственный ресурсный файл (а так чаще всего и бывает), есть два варианта&lt;br /&gt;
&lt;br /&gt;
# переименовать один из ресурсных файлов&lt;br /&gt;
# поместить все ресурсы в один файл&lt;br /&gt;
&lt;br /&gt;
В последнем случае может потребоваться задание раздельных префиксов для ресурсов, относящихся к разным частям приложения (например, один префикс для иконок легенды и второй для остальных файлов). При изменении префикса для ресурсов легенды также необходимо соответствующим образом изменить переменную &amp;lt;tt&amp;gt;resource_prefix&amp;lt;/tt&amp;gt; в файле &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;resources_prefix = &amp;quot;:/legend/imgs/&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы выбрали второй вариант: все изображения находятся в каталоге images и вложенных каталогах, в ресурсном файле создано два префикса и соотвественно изменена переменная &amp;lt;tt&amp;gt;resource_prefix&amp;lt;/tt&amp;gt; в файле &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;. Обратите внимание, что помимо задания другого префикса, для каждого файла был создан псевдоним (alias).&lt;br /&gt;
&lt;br /&gt;
При использовании легенды немного меняется процедура добавления слоёв. Если раньше для загрузки и отображения слоя мы использовали свой собственный метод, в котором добавляли слой и обновляли &amp;lt;tt&amp;gt;LayerSet&amp;lt;/tt&amp;gt;, то теперь контролировать процесс загрузки и удаления будет виджет легенды. Виджет имеет слот, обновляющий список слоёв при каждом добавлении, удалении или перемещении слоя. Всё что от нас требуется — вызвать соответствующие методы класса &amp;lt;tt&amp;gt;QgsMapLayerRegistry&amp;lt;/tt&amp;gt; (например, &amp;lt;tt&amp;gt;addMapLayer&amp;lt;/tt&amp;gt; или &amp;lt;tt&amp;gt;removeMapLayer&amp;lt;/tt&amp;gt;). А вот вызов метода &amp;lt;tt&amp;gt;setLayerSet&amp;lt;/tt&amp;gt; класса &amp;lt;tt&amp;gt;QgsMapCanvas&amp;lt;/tt&amp;gt; теперь не нужен, т.к. об этом заботится виджет легенды. Его можно закомментировать или вообще удалить. Таким образом, для добавления нового слоя необходима всего одна строка кода&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
QgsMapLayerRegistry.instance().addMapLayer( layer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
здесь &amp;lt;tt&amp;gt;layer&amp;lt;/tt&amp;gt; — экземпляр класса &amp;lt;tt&amp;gt;QgsVectorLayer&amp;lt;/tt&amp;gt; или &amp;lt;tt&amp;gt;QgsRasterLayer&amp;lt;/tt&amp;gt;, подробнее об этом можно прочесть в [http://gis-lab.info/qa/qgis-standalone предыдущей статье].&lt;br /&gt;
&lt;br /&gt;
Вместе в легендой поставляется простой диалог свойств слоя. Чтобы им можно было пользоваться, необходимо скомпилировать файл &amp;lt;tt&amp;gt;dlgLayerProperties.ui&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pyuic4 dlgLayerProperties.ui -o dlgLayerProperties_ui.py&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Диалог позволяет задать имя слоя, изменить отображаемое поле и настраивать видимость в пределах масштаба. Если этого функционала не достаточно, можно, взяв за основу существующий диалог, разработать свой вариант.&lt;br /&gt;
&lt;br /&gt;
[[Файл:qgis-legend-02.png|center]]&lt;br /&gt;
&lt;br /&gt;
При смене активного слоя виджет легенды испускает сигнал &amp;lt;tt&amp;gt;activeLayerChanged&amp;lt;/tt&amp;gt;, который можно использовать для активации/деактивации определенных инструментов приложения, например, в зависимости от типа слоя (растр или вектор). Для этого необходимо в главном классе приложения связать сигнал со слотом, который и будет отвечать за активацию/деактивацию инструментов или выполнять какие-то другие действия. Например, так&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
self.connect( self.legend, SIGNAL( &amp;quot;activeLayerChanged&amp;quot; ), self.enableTools )&lt;br /&gt;
&lt;br /&gt;
def enableTools( self ):&lt;br /&gt;
  if not self.legend.activeLayer():&lt;br /&gt;
    # нет активного слоя, деактивируем инструменты общего назначения&lt;br /&gt;
  else:&lt;br /&gt;
    # делаем инструменты общего назначения доступными&lt;br /&gt;
&lt;br /&gt;
    layerType = self.legend.activeLayer().layer().type()&lt;br /&gt;
    if layerType == 0: # Vector Layer&lt;br /&gt;
      # активируем инструменты для работы с вектором и деактивируем остальные&lt;br /&gt;
    elif layerType == 1: # Raster Layer&lt;br /&gt;
      # активируем инструменты для работы с растром и деактивируем остальные&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также виджет предоставляет несколько полезных методов, с помощью которых можно&lt;br /&gt;
&lt;br /&gt;
* перебрать все слои&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
for layer in self.legend.layers:&lt;br /&gt;
  # сделать что-то со слоем&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* скрыть или отобразить все слои&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def showAllLayers( self ):&lt;br /&gt;
  self.legend.setStatusForAllLayers( True )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* получить активный слой &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;return self.legend.activeLayer()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* обновить символику слоя &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;self.legend.refreshLayerSymbology( layer )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* удалить слои по идентификаторам &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;self.legend.removeLayers( layerIds )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Разумеется, это далеко не полный список методов рассматриваемого виджета. Более полное представление о его возможностях можно получить заглянув в файл &amp;lt;tt&amp;gt;legend.py&amp;lt;/tt&amp;gt;, код достаточно прозрачный и снабжен комментариями, так что разобраться в нем не составит труда.&lt;br /&gt;
&lt;br /&gt;
На этом знакомство с виджетом легенды будем считать оконченным. Многое осталось за бортом: например, не были затронуты вопросы настройки символики, расширения диалогового окна свойств слоя, взаимодействие легенды и инструментов карты... Возможно, если тема окажется интересной, статья получит продолжение.&lt;br /&gt;
&lt;br /&gt;
Исходные коды примера, а так же все необходимые изображения и тестовый набор данных можно скачать [http://gis-lab.info/other/qgis-legend.7z одним файлом].&lt;br /&gt;
&lt;br /&gt;
Необходимо отметить, что существует еще один вариант легенды, созданный Aaron Racicot для проекта [http://svn.infodrizzle.org/openocean/trunk/openoceanmap/Tools/legend.py OpenOceanMap] и основанный на элементе управления QCheckBox, а не на [http://doc.qt.nokia.com/4.6/qtreewidget.html QTreeWidget].&lt;br /&gt;
&lt;br /&gt;
=== Ссылки по теме ===&lt;br /&gt;
&lt;br /&gt;
# [http://gis-lab.info/qa/qgis-standalone.html Создание приложения на базе набора библиотек QGIS на Python]&lt;br /&gt;
# [http://geotux.tuxfamily.org/index.php?option=com_myblog&amp;amp;task=view&amp;amp;id=270&amp;amp;Itemid=59&amp;amp;lang=en Layer list widget for PyQGIS applications]&lt;/div&gt;</summary>
		<author><name>Voltron</name></author>
	</entry>
</feed>