【问题标题】:PyQGIS - Adding layer from PostGis database and work whith it in QGIS interfacePyQGIS - 从 PostGis 数据库添加图层并在 QGIS 界面中使用它
【发布时间】:2020-06-22 08:43:45
【问题描述】:

我尝试从我的数据库 postgis 添加到我的 QGIS 界面中,我正在使用具有良好参数的脚本。 但我的问题是当我运行我的 QGIS 错误并关闭函数时。

from qgis.core import *
from qgis.core import QgsProject
from PyQt5.QtCore import QFileInfo
from qgis.core import QgsVectorLayer, QgsDataSourceUri
from qgis.utils import *

def run_script(iface):
   uri = QgsDataSourceUri()
   uri.setConnection("localhost", "5432", "Base_test", "user", "passeword")
   uri.setDataSource("public", "BPE", "geom")

   layer = QgsVectorLayer(uri.uri(), "bpe", "user")
   if not layer.isValide():
       print("Layer %s did not load" %layer.name())  
   QgsProject.instance().addMapLayer(layer)

它告诉我该层没有加载。之后需要重新启动 QGIS。

谁能帮帮我。

我正在使用 QGIS 3.10

【问题讨论】:

    标签: python postgis qgis


    【解决方案1】:

    试试这个代码:

       from qgis.core import *
       from qgis.core import QgsProject
       from PyQt5.QtCore import QFileInfo
       from qgis.core import QgsVectorLayer, 
       QgsDataSourceUri
       from qgis.utils import *  
    
       def run_script(iface):
       uri = QgsDataSourceUri()
       uri.setConnection("localhost", "5432", "Base_test", 
       "user", "passeword")
       uri.setDataSource("public", "BPE", "geom")
    
       layer = QgsVectorLayer(uri.uri(), "bpe", "postgres")
       if not layer.isValid():
           print("Layer %s did not load" %layer.name())  
       QgsProject.instance().addMapLayer(layer)
    
       run_script()
    
    1. 你写错了:if not layer.isValide()-->if notlayer.isValid()
    2. 你需要指定提供者(这里是postgres)layer = QgsVectorLayer(uri.uri(), "bpe", "user")-->layer=QgsVectorLayer(uri.uri(), "bpe", "postgres")
    3. 运行/调用函数(你刚刚定义它):run_script()

    查看文档:https://qgis.org/pyqgis/3.0/core/Vector/QgsVectorLayer.html

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多