Mais

Adicionando camada PostGIS do plugin QGIS Python

Adicionando camada PostGIS do plugin QGIS Python


Tento desenvolver um plug-in para adicionar camadas postgis ao qgis a partir de um plug-in como parte do aprendizado de Python.

O código para adicionar uma camada postgis é retirado do livro de receitas e funciona bem se eu executá-lo no console do python dentro do qgis (se o botão OK for pressionado na caixa de diálogo, resultado == 1 e deve adicionar minha camada ao qgis).

Mas se eu executá-lo a partir do meu plugin, ele exibe a mensagem NameError: o nome 'QgsDataSourceURI' não está definido. Por que recebo esse erro ao executá-lo a partir do plug-in?

Existe uma diferença como eu adiciono uma camada de um plugin / dentro de uma função em relação ao console do Python?

def run (self): "" "Método de execução que realiza todo o trabalho real" "" # mostra a caixa de diálogo self.dlg.show () # Executa o resultado do loop de evento da caixa de diálogo = self.dlg.exec_ () # Veja se está OK foi pressionado se resultado == 1: # Faça algo útil aqui - exclua a linha que contém a passagem e # substitua pelo seu código. uri = QgsDataSourceURI () uri.setConnection ("localhost", "5432", "test", "postgres", "postgres") #set esquema de banco de dados, nome da tabela, coluna geométrica e subconjunto opcional (cláusula WHERE) uri.setDataSource ( "basic", "cities", "geom") # Definindo o nome da camada e tipo de camada para QGIS? vlayer = QgsVectorLayer (uri .uri (), "cities", "postgres")

Porque você precisa importar classes Python antes de usá-las. Basta escrever no cabeçalho desse arquivo:

from qgis.core import QgsDataSourceURI

É diferente no QGIS Python Console porque carrega automaticamente as classes QGIS quando é aberto.

Observe que se você não importou oQgsVectorLayerclasse ainda, você obterá um erro semelhante. Em vez de adicionar uma nova linha, você pode listar as classes das quais gostaria de importarqgis.corebiblioteca, desta forma:

from qgis.core import QgsVectorLayer, QgsDataSourceURI

Assista o vídeo: Python in QGIS. Урок 5. Plugins.