缓冲区分析是GIS中的入门级分析内容,使用非常广泛。 例如,有必要统计一下市内所有学校周围1公里范围内各有多少家小吃店。 统计全市所有楼盘周围2公里范围内各有多少配套设施? 等等。 它们都为分析对象创建不同大小的缓冲区,并利用空间查询统计缓冲区范围内的特定属性。
本文分两个部分进行说明。 首先介绍如何使用QGIS桌面端的软件操作来生成缓冲区,然后再谈PyQGIS的编程实现。 再次强调,PyQGIS的接口与c的接口基本一致,可以像在c上开发QGIS的朋友一样参考正文。
在本文中,您可以使用QGIS附带的示例数据“airports.shp”或自由使用自己的数据。
QGIS桌面端缓冲区分析
1、打开QGIS桌面软件,加载" airports.shp "数据。
2、打开QGIS菜单项" Processing - Toolbox ",在弹出窗口中,输入" buffer "进行查询,选择" fixed distance buffer "命令,然后单击(注意:这里的距离是我输入的1000,单位是当前地图单位,剩下的保持默认值。)
3、点击确定后,地图中将添加“缓冲区”图层,地图画布上将显示缓冲区的形状。 (为了便于显示,这里将“airports”层的样式设置为飞机的形状。)
是so easy吗? 这样就有缓冲器了。 利用该缓冲层,可以查询统计当前机场周边的情况。
PyQGIS的实现
现在,让我们使用PyQGIS来实现同样的功能。 这有助于编程自动处理和二次开发。
1、打开图层,显示在地图画布上。 这个我在以前的文章里说过了,接下来直接给代码
layer=qgsvectorlayer ('/users/ja Cory/one驱动器/backup/files backup/qgis _ sample _ data/shape files/airports
' airports ',' ogr ' )
QgsMapLayerRegistry.instance ().addmaplayers ([ layer ] ) ) ) ) ) ) ) ) )。
2、新建临时缓冲图层,获取该图层的"数据提供器",准备添加元素
buffer layer=qgsvectorlayer (' polygon )、' buffer )、' memory () ) ) )。
pr=buffer layer.data提供程序(
3、循环“layer”层的各要素,形成缓冲区
features=layer.getFeatures (
for feat in features:
#创建缓冲区。 第一个参数是Distance,第二个参数是segments
buffer=feat.geometry ().buffer ) (1000,5 ) )。
#新要素存储缓冲区几何图形并将其添加到缓冲区图层
b=QgsFeature () )
b .设置几何(缓冲区) )。
pr.addfeatures([b] ) )。
4、最后,将该缓冲图层添加到地图画布上进行显示
bufferLayer.updateExtents (
设置buffer layer.setlayertransparency (70 ) #图层的透明度,以便可以忽略
QgsMapLayerRegistry.instance ().addmaplayers([bufferlayer] ) )。
结合上一句中提到的向量层查询操作,可以进行具体的空间查询和统计。
-------------请参阅
嗯,是的谢谢你读给我听。
如果朋友们有兴趣的内容,笔者想参加写作计划。 你可以在评论区留言。 一起探讨,共同进步!