O QGIS é uma ferramenta brilhante para automação baseada em Python em forma de scripts personalizados ou até mesmo plugins. Os primeiros passos para escrever o código personalizado podem ser um pouco difíceis, já que você precisa entender a API do Python que é um pouco complexa. A série de Desenvolvimento de Plugins do QGIS que inicia hoje tem como objetivo o desenvolvimento de um plug-in personalizado totalmente funcional capaz de gravar valores de atributos de uma camada de origem para uma camada de destino com base em sua proximidade espacial.
Nesta parte, mencionarei o básico, o que é bom saber antes de começar.
1. Documentação
Diferentes versões do QGIS vêm com diferentes APIs do Python. A documentação deve ser encontrada em https://qgis.org, sendo a mais recente a versão 3.2. Observe que, se você acessar diretamente o site http://qgis.org/api/, verá os documentos atuais.
Alternativamente, você pode o “apt install qgis-api-doc” em seu sistema Ubuntu e rodar “python -m SimpleHTTPServer[port]” dentro de “/usr/share/qgis/doc/api”. Você encontrará a documentação em “http://localhost:8000” (se você não fornecer o número da porta) e estará disponível mesmo quando estiver off-line.
2. Estrutura Básica da API
Abaixo uma visão resumida do que está disponível dentro da API:
- Pacote qgis.core traz todos os objetos básicos como QgsMapLayer, QgsDataSourceURI, QgsFeature, etc
- O pacote qgis.gui traz elementos GUI que podem ser usados dentro do QGIS como QgsMessageBar ou QgsInterface
- qgis.analysis, qgis.networkanalysis, qgis.server e qgis.testing pacotes que não serão abordados na série
- Módulo qgis.utils que vem com iface (muito útil no console do QGIS Python)
3. Console Python do QGIS
Usar o console Python é a maneira mais fácil de automatizar o fluxo de trabalho do QGIS. Pode ser acessado pressionando Ctrl + Alt + P ou navegando pelo menu em Plugins -> Python Console. Como mencionado acima o módulo iface do qgis.utils é exposto por padrão dentro do console, permitindo-lhe interagir com o QGIS GUI. Experimente os exemplos a seguir, para fazer um teste inicial:
iface.mapCanvas().scale() # retorna a escala atual do mapa iface.mapCanvas().zoomScale(100) # zoom para escala 1:100 iface.activeLayer().name() # obtém o nome da camada ativa iface.activeLayer().startEditing() # realizar edição
Essa foi uma breve introdução à API do QGIS, no próximo post falaremos mais profundamente sobre o console do QGIS.