簡體   English   中英

在獨立的Python QGis應用程序中加載圖層/形狀文件時出錯

[英]Error Loading Layer/Shapefile in a Standalone Python QGis Application

我嘗試使用PyQgis API在Python上加載shapefile但無濟於事。 我仔細檢查了shapefile的路徑,發現它是正確的。 QGIS模塊似乎也進口得很好。 當我在QgsRegistry中檢查提供者列表時,它什么都不返回。 我可以知道自己所缺少的內容或應該如何解決嗎?

我使用的是Ubuntu 12.04,QGIS 2.4.0 Chugiak和Python 2.7.3。 先感謝您!

以下是我的輸出和代碼:

“ /usr/bin/python2.7 /home/victorzhiyulee/IdeaProjects/Delineation/select_dun_calculate_print.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/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()

我認為前綴路徑不正確,路徑為“/ usr / share / qgis”,所以我的前綴只是“/ usr”。 我已經檢查了打印QgsApplication.showSettings()輸出中的路徑以發現這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM