Qgis python開發環境配置和簡單教程

2021-10-09 00:21:15 字數 4124 閱讀 2656

目錄

簡介配置

qgis+anaconda

原因分析:

解決方法

qgis庫的介紹與使用

包的簡介

示例python呼叫qgis中的演算法

示例演算法id的查詢(如上演算法native:symmetricaldifference)

演算法的引數的查詢

qgis 是開源桌面地理資訊系統,基於c++語言進行開發,支援進行二次開發,開發方式有兩種,一種外掛程式形式新增個性化的工具,一種是呼叫qgis的api進行外部應用開發。

qgis系統本身是用c ++編寫的,它有自己的api集,也是用c ++編寫的。python api實現為圍繞這些c ++ api的包裝器。例如,有乙個名為qgisinte***ce的python類,它充當同名c ++類的包裝器。由c ++版本的qgisinte***ce實現的所有方法,類變數等都可以通過python包裝器獲得。

要想使用qgis的api進行開發,需要配置qgis的python,以便能夠正常呼叫其api。

1.先設定系統變數path,要把qgis下的py37目錄也放進去(切記要放到最前面,防止被其他地方安裝的python覆蓋),如:

c:\software\qgis\bin;

配置完可以再命令框內輸入where python,檢視python編譯器路徑;

2.pythonpath變數設定:

pythonpath:

3.pythonhome設定如下,注意那個路徑要設定到python37下,而不是qgis的bin下:(本機測試後發現即使不用也不影響執行)

pythonhome:

4.檢查配置是否成功的方法:

命令框輸入python進行python編譯器

執行from qgis.core  import *

如果沒有提示錯誤,即可以認為配置成功

本人在本地機器上,使用anaconda對python環境進行管理,使用如上步驟進行配置qgis的python和api環境時,出現了anacondaspyder無法開啟的問題!

qgis裡面自帶了python, 還有一些lib,比如qgis, numpy。這可能和一些整合開發環境,比如現在比較流行的anaconda有衝突

這個說明anaconda啟動時需要配置其依賴的,當你配置了pythonpath的python環境時,導致anaconda無法順利執行啟動。刪除pythonpath的環境變數後,anaconda可以正常啟動。

1.在anacondaqgis相關包;

如果是基於anacondaqgis相關的庫檔案,而不是直接配置qgis位址的話,能夠基於anaconda的環境使用qgis的包;

conda install -c conda-forge qgis

conda install -c conda-forge/label/broken qgis

conda install -c conda-forge/label/cf201901 qgis

conda install -c conda-forge/label/cf202003 qgis

2.為qgis單獨弄乙個純粹的文字編輯器所有pyqgis庫都在乙個名為qgis的包下組織。但是,您通常不會直接匯入qgis,因為所有有趣的庫都是此主程式包中的子包; 以下是構成pyqgis庫的五個包:

pyqgis庫的五個包

qgis.core 

這樣可以訪問整個qgis中使用的核心gis功能。

qgis.gui  

這定義了一系列gui小部件,您可以在自己的程式中包含這些小部件。

qgis.analysis   

這提供了空間分析工具來分析向量和柵格格式資料。

qgis.networkanalysis 

這提供了構建和分析拓撲的工具。

qgis.utils 

這實現了各種功能,允許您使用python使用qgis應用程式。

下面舉個例子簡單介紹,計算圖層中所有線要素的長度:

#qgis內建的python console可以不用匯入以下兩庫

from qgis.core import *

import qgis.utils

#獲取指定名稱圖層(當qgis專案開啟時,可以使用下面語句讀取圖層)

layer = qgsproject.instance().maplayersbyname("topo_centerroad")[0]

"""#讀取shp檔案獲取圖層

lines_shp = os.path.join(test_data_dir, 'lines.shp')

layer = qgsvectorlayer(lines_shp, 'lines', 'ogr')

"""#定義座標轉換

transf = qgscoordinatetransform(qgscoordinatereferencesystem("epsg:4326"),qgscoordinatereferencesystem("epsg:3395"), qgsproject.instance())

#計算圖層要素長度

for feature in layer.getfeatures():

#獲取圖層要素屬性

id=str(feature.attribute('objectid'))

#獲取圖層要素幾何

geom=feature.geometry()

#圖層幾何座標轉換

geom.transform(transf)

#要素長度計算

length=geom.length()

print("道路id "+id+":"+str(length)+'公尺')

qgis除了基礎的計算函式(例如計算幾何長度)外,還存在一些更加高階的演算法,存在於qgis的工具箱當中,例如最短路徑演算法。這些演算法在qgis中不是直接用乙個函式的繼續封裝,需要基於另外一套方法進行呼叫。

首先從qgis中匯入qgsnativealgorithms和processing包,值得注意的是processing是在python外掛程式目錄下,不是qgis中的那個。

from qgis.analysis import qgsnativealgorithms 

#相對路徑

#絕對路徑

# processing是外掛程式!!

import processing from processing.core.processing import processing

然後是初始化、呼叫和關閉:

qgs.initqgis()

processing.run("native:symmetricaldifference", )

qgs.exitqgis()

核心是processing.run,輸入引數包括演算法id,和演算法的引數

1.通過演算法查詢所有演算法

print("{}:{} --> {}".format(alg.provider().name(), alg.name(), alg.displayname()))

2.從qgis的工具箱內查詢id,如下圖所示:

使用qgis工具箱執行後,可以日誌面板檢視輸入的引數型別和格式

Qgis Python開發環境配置

最近工作涉及qgis開發,之前就在arcgis中使用過python指令碼,qgis還是使用python來開發。但是在搭建環境時候,遇到了不少坑,記錄一下。環境 1 qgis版本 qgis osgeo4w 2.14.17 1 setup x86 64 2 pycharm版本 最新版本,這個無所謂 3 ...

QGIS Python開發環境配置

依賴庫安裝 pyqgis依賴於 sip和pyqt5,以下是官網給出的解釋 qgis 3中的pyqgis繫結依賴於sip和pyqt5。使用sip而不是更廣泛使用的swig的原因是qgis 依賴於qt庫,qt的python pyqt 依賴於sip。sip安裝pip install sippyqt5安裝 ...

QT CMake VTK PCL點雲開發環境配置

二 cmake安裝 最新版本cmake3.14.5 五 注意 2.pcl安裝後,要設定環境變數,我的是 e pcl bin e pcl 3rdparty boost lib e pcl 3rdparty flann bin e pcl 3rdparty qhull bin e pcl 3rdpart...