Escolar Documentos
Profissional Documentos
Cultura Documentos
Viçosa-MG, 2021
Sumário
[1/5]: https://youtu.be/k5sqL5NfdE0
• https://www.qgis.org/pt_BR/site/forusers/download.html
• Usar instalação expressa;
• Selecionar QGIS, GDAL, GRASS;
• Aceitar todos os termos de licenças;
• Exercitar a paciência: demora a instalação!
A-2. Notepad++
• https://notepad-plus-plus.org/downloads/
• https://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
[1/5]: https://youtu.be/k5sqL5NfdE0
Crie uma pasta no diretório “C:” com o nome “PyQGIS”. Esta pasta será onde se desenvolverá o plugin.
• No QGIS acesse o menu Configurações > Perfis de Usuário > Abrir pasta de perfil ativo.
• Na nova janela que será aberta, entre no diretório “python”. Após clique com botão direito em
cima da pasta plugin e escolha a opção “copiar como caminho”.
• Dentro da pasta PyQGIS, clique com o botão direito e acesse “Novo > Atalho”. Cole o caminho
copiado no passo anterior. Salve o atalho como “default”.
[2/5]: https://youtu.be/3OYCv6fIkpE
1ª tela:
• Descrição como “Exemplo de plugin que aplica um buffer em uma camada vetorial”
2ª tela:
3ª tela:
• No campo Template há três opções de plugins: Janela de Diálogo, Janela Dock; Caixa de
ferramentas. Escolha a janela de diálogo.
• Text for menu item: digite o nome do plugin que irá aparecer no QGIS, no caso “Exemplo Buffer”.
• No campo “Menu” escolha “plugin” para a ferramenta aparecer no menu plugin do QGIS.
4ª tela:
• É recomendável que seu plugin esteja armazenado no github e que os links sejam preenchidos
nos campos “Bug Tracker”, “Repository” e “Home Page”. Para este exemplo não será
necessário configurar esta etapa.
6ª tela:
Caso o arquivo “resources.py” não exista, execute o programa “OSGEO4W SHELL”. Entre no diretório
do plugin com o comando cd C:/PyQGIS/exemplo_buffer. Após, execute o comando pyrcc5 resources.qrc
-o resources.py .
[3/5]: https://youtu.be/5cDHJp1EQkA
Na pasta “PyQGIS” terá o diretório “exemplo_buffer”, relativa à estrutura do plugin criada na etapa
anterior.
Clique com o botão direito do mouse sobre a pasta “exemplo_buffer” e escolha a opção “Selecionar a
origem do vínculo”
Use o atalho “default” para entrar dentro do diretório em que os plugins do QGIS ficam armazenado.
Dentro desse diretório, clique com botão direito e escolha a opção “Soltar como...” > “Vínculo
Simbólico”. Esse procedimento, executados com as ferramentas do “Link Shell Extension”, evita que o
usuário fique a todo momento copiando os dados para a pasta do QGIS. Ele cria um atalho que o QGIS
entende.
No menu plugin irá aparecer a opção “Exemplo Buffer”. Ao executar o plugin, aparecerá apenas uma
janela com os botões “OK” e “Cancel”.
[4/5]: https://youtu.be/ExKnjPEhpsE
Na janela inicial, clique no botão “open” e vá até o diretório do plugin. Selecione o arquivo de extensão
.ui (“exemplo_buffer_dialog_base.ui”).
• 3 label
• 1 comboBox
• 1 lineEdit
• 1 doubleSpinBox
• 2 toolButton
Os labels devem ter a propriedade de texto alterada para instruir o usuário no uso do plugin.
Para atualizar a parte gráfica do plugin no QGIS é necessário utilizar o “Plugin Reload”.
• Execute a opção “Configure” e na janela que será aberta, selecione o plugin “Exemplo Buffer” e
clique em “OK”.
• Após, para recarregar, utilize a opção do “Plugin Reload” chamada “reload plugin: Exemplo
Buffer
• Após, abra o plugin em desenvolvimento e veja a janela gráfica atualizada.
[5/5]: https://youtu.be/HcpP7FVAn48
F-1. exemplo_buffer.py
A função “carregaVetor()” tem o objetivo de carregar as camadas vetoriais do projeto corrente do QGIS
ao combobox
def carregaVetor(self):
"""Preenche o combox com as layers vetoriais existentes no projeto"""
self.dlg.comboBox.clear()
lista_layers = [layer for layer in QgsProject.instance().mapLayers().values()]
lista_layer_vetor = []
for layer in lista_layers:
if layer.type() == QgsMapLayer.VectorLayer:
lista_layer_vetor.append(layer.name())
self.dlg.comboBox.addItems(lista_layer_vetor)
A função “camadaEnt()” tem o objetivo de obter a camada vetorial que foi escolhida pelo usuário e
inseri-la no combobox.
def camadaEnt(self):
"""Obter a layer definida no combobox"""
layer = None
nomecamada = self.dlg.comboBox.currentText()
for lyr in QgsProject.instance().mapLayers().values():
if lyr.name() == nomecamada:
layer = lyr
break
return layer
A função “definirSaida()” tem o objetivo abrir a janela de diálogo para o usuário definir o nome da
camada resultante da aplicação do buffer.
def definirSaida(self):
"""abre a janela de dialógo para definir o nome e o local da layer a ser gerada"""
camada_salvar = str(QFileDialog.getSaveFileName(caption="Defina a layer de saída...",
filter="Shapefiles (*.shp)")[0])
self.dlg.lineEdit.setText(camada_salvar)
A função “variaveis()” define todas as variáveis de camadas e largura do buffer a ser utilizado na função
“run()”.
def variaveis(self):
"""define as variaveis utilizada na função run"""
self.camada = self.camadaEnt()
self.saida = self.dlg.lineEdit.text()
self.largura = self.dlg.doubleSpinBox.value()
Há várias formas de aplicar um buffer utilizando o python. Pode-se utilizar a API do QGIS, a partir da
classe QgsGeometry; pode-se utilizar os comandos do SAGA ou o processamento do próprio QGIS.
Neste exemplo, utilizará o comando buffer nativo do próprio QGIS. Para isto é necessário declarar a
biblioteca processing.
def run(self):
"""Run method that performs all the real work"""
# Create the dialog with elements (after translation) and keep reference
# Only create GUI ONCE in callback, so that it will only load when the plugin is started
if self.first_start == True:
self.first_start = False
self.dlg = ExemploBufferDialog()
https://youtu.be/k5sqL5NfdE0
Para disponibilizar o plugin criado para outros usuários do QGIS, há duas formas de proceder: