Depois de mexer no console do QGIS Python e implementar a análise de vizinho mais próximo, vamos criar uma GUI muito simples para o plug-in.
Embora os documentos da API do QGIS levassem algumas horas para serem entendidos, o ecossistema do PyQGIS me ajudou muito. Aqui vem a lista de ferramentas que você deve incorporar ao seu processo de desenvolvimento o mais rápido possível.
1. CONSTRUTOR DE PLUG-INS
O QGIS Plugin Builder é um plugin criado para criar outros plugins. Ele permite você criá-lo em minutos e que você codifique em vez de configurar coisas que você não quer configurar. Note que você deve colocar o plugin dentro da pasta de plugins do QGIS (o padrão é ~/.qgis2/python/plugins) no Linux.
Lembre-se de rodar pyrcc4 -o resources.py resources.qrc dentro da pasta do seu plugin antes de adicioná-lo ao QGIS.
2. PLUGIN RELOADER
O QGIS Plugin Reloader é um plugin (possivelmente criado com o QGIS Plugin Builder) que permite que você atualize (reload) o seu plugin enquanto você codifica. Nenhuma reinicialização do QGIS é necessária.
3. QT DESIGNER
O Qt Designer vem com o pacote qt4-designer no Ubuntu. Ele é feito sob medida para projetar e construir GUIs a partir de componentes do Qt que podem ser usados dentro do QGIS. Sua interface de arrastar e soltar permite prototipar rapidamente.
Graças ao Plugin Builder, você pode carregar o arquivo attribute_transfer_dialog_base.ui diretamente no Qt Designer e ajustá-lo às suas necessidades.
Não é preciso muito, apenas um QLineEdit e alguns QComboBoxwidgets. Eles estarão disponíveis no arquivo attribute_transfer.py como propriedades da classe AttributeTransferDialog.
O nome do widget pode ser personalizado na barra lateral direita e eu aconselho você a fazer isso. Eu escolhi o seguinte:
Uma vez carregado com Plugins -> Gerenciar e Instalar Plugins -> AttributeTransfer, o plugin está disponível diretamente na barra de ferramentas ou no menu Vetor. Está faltando a lógica de negócios, mas nós já fizemos isso no post anterior. Tudo o que deve ser fazer é unir essas duas partes.