目錄
簡介配置
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環境時,出現了anaconda和spyder無法開啟的問題!
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...