自從QGIS 1.0版釋出後就開始支援Python了
也因為QGIS與Python同為開源者的愛好
QGIS上就有越來越多的Python小工具可以用
今天就來示範在QGIS的Python主控台
輸入簡單的Python指令來操作圖層的相關應用
首先開啟QGIS,並隨便加入一個向量圖層
(這裡用臺北市垃圾清運路線圖為例,資料來源:https://data.gov.tw/ )
開啟後如下圖,該圖的屬性資料如圖的左下方
接下來開啟 附加元件>Python主控台
就會看到如下圖的Python主控台命令列輸入框
可以直接輸入dir,就會列出所有可以用的function
但在呼叫function使用時,大小寫有差喔,記得要注意
接下來可以先設定layer為目前當前開啟的layer,方便之後下指令操作
layer = iface.activeLayer()
範例一:
接下來就來看簡單的印出前5行的DepName與Address欄位的屬性資料
layer = iface.activeLayer()
i=0
for f in layer.getFeatures():
#印出屬性資料
print f['DepName'], f['Address']
i=i+1
if i>5:
break
範例二:
若想知道圖層的坐標該怎麼寫呢?
可以透過geometry()這個function來取得
宣告一個geom 來接收 f.geometry()
layer = iface.activeLayer()
i=0
for f in layer.getFeatures():
#設定geom為每一個feature的geometry
geom = f.geometry()
#透過geom取得坐標
#print geom.asPoint()
#print geom.asPoint().x()
print '%s, %s, %f, %f' % (f['Region'], f['CarNo'], geom.asPoint().y(), geom.asPoint().x())
i=i+1
if i>5:
break
範例三:
最後若想把整張圖層的屬性資料結果匯出成csv或txt檔案
該怎麼寫呢?
layer = iface.activeLayer()
output_file = open('d:/PointData.txt', 'w')
#output_file = open('d:/PointData.csv', 'w')
for f in layer.getFeatures():
#設定geom為每一個feature的geometry
geom = f.geometry()
#透過geom取得坐標
line = '%s,%s,%f,%f\n' % (f['Region'], f['CarNo'], geom.asPoint().y(), geom.asPoint().x())
#編碼UTF-8格式
unicode_line = line.encode('utf-8')
output_file.write(unicode_line)
output_file.close()
最後輸出結果則如下圖
以上就是利用Python程式碼操作QGIS的元件
很簡單的範例,提供大家參考
沒有留言:
張貼留言