在独立的Python QGis应用程序中加载Layer/Shapefile时出错

2024-09-27 23:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pyqgisapi在Python上加载shapefile,但没有成功。我仔细检查了shapefile的路径,发现它是正确的。QGIS模块似乎也被导入了。当我检查QgsRegistry中的提供者列表时,它什么也不返回。我能知道我遗漏了什么吗?或者我应该如何排除故障?在

我使用的是Ubuntu12.04、QGIS 2.4.0 Chugiak和Python2.7.3。 提前谢谢你!在

以下是我的输出和代码:

““ /usr/bin/python2.7/home/victorzhiyulee/IdeaProjects/division/select_dun_计算_打印.py 应用状态: QGIS_PREFIX_PATH env var:
前缀:/usr/bin/qgis 插件路径:/usr/bin/qgis/lib/qgis/plugins 包数据路径:/usr/bin/qgis/share/qgis 活动主题名称:
活动主题路径::/images/themes// 默认主题路径::/images/themes/Default/ SVG搜索路径:/usr/bin/qgis/share/qgis/SVG/ 用户数据库路径:/usr/bin/qgis/share/qgis/resources/qgis.db版在

提供程序列表 找不到OGR提供程序! 文件存在;路径正确 ('/home/victorzhiyulee/桌面/邓氏'、'dun'、'ogr') 层加载失败!在

进程结束,退出代码为0 ““

__author__ = 'victorzhiyulee'
# Importing QGis API
# Importing OGR & OSR
import os
import sys
import PyQt4.QtCore
import PyQt4.QtGui
import qgis.core
import qgis.gui
from qgis.core import *
from qgis.gui import *
from osgeo import ogr, osr
from PyQt4.QtCore import *

# Supply path to the QGis resources on your PC
# noinspection PyTypeChecker
QgsApplication.setPrefixPath("/usr/bin/qgis", True)
# Load providers
QgsApplication.initQgis()
# Show setting of parameters
print QgsApplication.showSettings()

# Load vector layer
data_source = "/home/victorzhiyulee/Desktop/dun.shp"
layer_name = "dun"
provider_name = "ogr"
fileInfo = QFileInfo(data_source)

print('Provider List')
print(QgsProviderRegistry.instance().providerList())

r = QgsProviderRegistry.instance()
if not 'ogr' in r.providerList():
    print 'Could not find OGR provider!'
else:
    print 'Providers found ok!'
# Add layer to the registry
layer = QgsVectorLayer(data_source, fileInfo.fileName(), provider_name)
QgsMapLayerRegistry.instance().addMapLayer(layer)

if fileInfo.exists():
    print("File exists; Path is correct")
    print(data_source, layer_name, provider_name)
    layer = QgsVectorLayer(data_source, fileInfo.fileName(), provider_name)
    if not layer.isValid():
        print("Layer failed to load!")
    else:
        print("Yes, layer loads successfully")
    features = layer.getFeatures()
else:
    print("Check if your path is correct")
    QgsApplication.exitQgis()
iteration = layer.getFeatures()
for features in iteration:
    # Fetch attributes
    attris = features.attributes()
    print(attris)
QgsApplication.exitQgis()

Tags: nameimport路径layersourcedatabinusr
1条回答
网友
1楼 · 发布于 2024-09-27 23:25:23

我觉得前缀路径不正确,路径应该是“/usr/share/qgis”,所以我的前缀只有“/usr”。 我检查了打印输出中的路径QgsApplication.showSettings应用程序()来发现这个。在

相关问题 更多 >

    热门问题