PyQGIS - 从 PostGis 数据库添加图层并在 QGIS 界面中使用它
PyQGIS - Adding layer from PostGis database and work whith it in QGIS interface
我尝试从我的 db postgis 添加到我的 QGIS 界面 table,我正在使用一个具有良好参数的脚本。
但我的问题是当我 运行 我的功能我的 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
试试这个代码:
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()
- 您犯了一个拼写错误:
if not layer.isValide()
-->if notlayer.isValid()
- 您需要指定提供程序(本例中为 postgres)
layer = QgsVectorLayer(uri.uri(), "bpe", "user")
--> layer=QgsVectorLayer(uri.uri(), "bpe", "postgres")
- Run/Call 函数(你刚刚定义的):
run_script()
查看文档:https://qgis.org/pyqgis/3.0/core/Vector/QgsVectorLayer.html
干杯
我尝试从我的 db postgis 添加到我的 QGIS 界面 table,我正在使用一个具有良好参数的脚本。 但我的问题是当我 运行 我的功能我的 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
试试这个代码:
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()
- 您犯了一个拼写错误:
if not layer.isValide()
-->if notlayer.isValid()
- 您需要指定提供程序(本例中为 postgres)
layer = QgsVectorLayer(uri.uri(), "bpe", "user")
-->layer=QgsVectorLayer(uri.uri(), "bpe", "postgres")
- Run/Call 函数(你刚刚定义的):
run_script()
查看文档:https://qgis.org/pyqgis/3.0/core/Vector/QgsVectorLayer.html
干杯