我尝试使用Python在PyQgis上加载一个shapefile,但没有成功。我反复检查了shapefile的路径,发现它是正确的。QGIS模块似乎也可以很好地导入。当我在QgsRegistry中检查提供程序列表时,它什么也不返回。我可以知道我错过了什么或者我应该如何排除故障吗?
我使用的是Ubuntu12.04、QGIS2.4.0Chugiak和Python2.7.3。提前谢谢你!
以下是我的输出和代码:
“/usr/bin/python2.7 /home/victorzhiyulee/IdeaProjects/Delineation/select_dun_calculate_print.py应用程序状态: QGIS_PREFIX_PATH env:
前缀: /usr/bin/qgis插件路径: /usr/bin/qgis/lib/qgis/plugins包数据路径: /usr/bin/qgis/share/qgis活动主题名:
活动主题路径::/图像/主题//默认主题路径::/图像/主题/默认/ SVG搜索路径: /usr/bin/qgis/share/qgis/svg/ User DB Path: /usr/bin/qgis/share/qgis/resources/qgis.db
提供程序列表无法找到OGR提供程序!文件存在;路径是正确的('/home/victorzhiyulee/Desktop/dun.shp','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()发布于 2014-12-10 11:27:39
我认为前缀路径不正确,路径应该是"/usr/share/qgis",所以我的前缀只有"/usr“。我检查了print QgsApplication.showSettings()输出中的路径,以发现这一点。
https://stackoverflow.com/questions/26528716
复制相似问题