Qgis作为一款开源的地图处理工具,兼容性好,能够对接多种空间数据源,本身轻量化,备受GIS工程师喜欢。但QGIS本身比较轻量,自身携带一些基础计算分析工具,但对于很多人来说可能不够用,因此需要进行二次开发。
Qgis二次开发的有两大方法,各有优势:
1.基于Qgis+visual studio+QT组合的全开发路径,基于C++语言,从无到有利用QGIS提供的库和函数,进行个性化工具的开发;
方法开发周期长,但自定义程度高。
https://blog.csdn.net/xiongjia516/article/details/81668665
https://blog.csdn.net/u014484783/article/details/80080615
2.基于python的嵌入式工具/脚本开发,基于python语言,在Qgis的基础上,使用Qgis提供的API(python的API库是基于C++语言生成的),实现计算或分析算法。
简单便捷,用于计算分析和重复性工作。
本文主要介绍第二种方法:
在QGIS中应用API进行个性化功能的开发,主要有三种途径:
这三种方法核心都是利用python API进行功能开发,不同是实现的方法不太一样而已;
1.每次QGIS启动,都默认在.qgis2/python中查找startup.py,启动QGIS自带的python解释器,可以插入自己预设的py文件,实现启动时执行;
2.可以通过在QGIS菜单栏的Plugin菜单下,打开自定义的python交互窗口。
3.可以通过在QGIS菜单栏的Plugin菜单下,打开自定义的python插件。
为了方便用户,交互控制台打开时默认载入如下包:
from qgis.core import *
import qgis.utils
因此,用户可以直接调用python API中的函数。
pythonAPI库主要包括了qgis.core和qgis.gui两大库,前者提供了GIS计算和分析相关的函数方法,后者提供了GUI实现和对象交互等函数。
官方API介绍如下:
https://qgis.org/pyqgis/master/index.html
测试文档:https://docs.qgis.org/testing/en/docs/index.html
获取图层对象:
#打开QGIS当前激活的图层
layer = iface.activeLayer()
#打开指定路径下的图层
layer = QgsVectorLayer("testdata/airports.shp", "airports", "ogr")
#打开项目下指定的图层
QgsProject.instance().mapLayersByName()
#获取要素
Features=layer.getFeatures()
#定义坐标系:
layer.setCrs(qgis.core.QgsCoordinateReferenceSystem(4326, qgis.core.QgsCoordinateReferenceSystem.EpsgCrsId))
#获取要素属性:
name=str(feature.attribute('name'))
#获取要素几何:
geom=feature.geometry()
#定义坐标转换:
transf = QgsCoordinateTransform(QgsCoordinateReferenceSystem("EPSG:4326"),QgsCoordinateReferenceSystem("EPSG:3395"), QgsProject.instance())
#要素几何坐标转换:
geom.transform(transf)
https://blog.csdn.net/this_is_id/article/details/105238944
https://blog.csdn.net/this_is_id/article/details/90715443#5.5%20%E4%BD%BF%E7%94%A8%E7%A9%BA%E9%97%B4%E7%B4%A2%E5%BC%95
建议从官方API文档中找到自己需要的功能进行应用和学习