目的
QGIS具有从一个点创建圆形缓冲区的功能,但是目前没有用于方形缓冲区的功能。
如何在QGIS Python控制台中制作方形缓冲区。
QGIS2.x的源(QGIS3.x也支持本文)
介绍
注意点数据
的坐标系(CRS)
-
即使创建了圆形缓冲区,也要在执行缓冲区处理之前检查输入点数据的坐标系(CRS)。
-
→在纬度/经度坐标系(WGS84,SRID 4326)中,如果缓冲区距离设置为500,则会创建一个500度的缓冲区
。
-
如果要将其修改为坐标系,请从"输入点"数据层中将其导出,然后在下面的坐标系中选择它。
- UTM 51 N(SRID 32651)→冲绳侧
- UTM 52 N(SRID 32652)→九州,广岛,松山边
- UTM 53 N(SRID 32653)→广岛?大阪?静冈
- UTM 54 N(SRID 32654)→静冈,关东,东北,北海道
-
UTM 55 N(SRID 32655)→从北海道带广东边来?
- 资源
-
其他仪表单位坐标系(CRS)可以
-
→在纬度/经度坐标系(WGS84,SRID 4326)中,如果缓冲区距离设置为500,则会创建一个500度的缓冲区
QGIS选择CRS案例研究
创建一个方形缓冲区
1.单击以选择一个层
2.显示Python控制台
3.复制下面的代码
QGIS版本2.x的
对于QGIS2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | layer = iface.activeLayer() feats = [ feat for feat in layer.getFeatures() ] epsg = layer.crs().postgisSrid() uri = "Polygon?crs=epsg:" + str(epsg) + "&field=id:integer&field=x:real&field=y:real&field=point_id:integer""&index=yes" mem_layer = QgsVectorLayer(uri, 'square_buffer', 'memory') prov = mem_layer.dataProvider() for i, feat in enumerate(feats): point = feat.geometry().asPoint() new_feat = QgsFeature() new_feat.setAttributes([i, point[0], point[1], feat.id()]) tmp_feat = feat.geometry().buffer(500, -1).boundingBox().asWktPolygon() new_feat.setGeometry(QgsGeometry.fromWkt(tmp_feat)) prov.addFeatures([new_feat]) ##### QGIS 2.x の場合 QgsMapLayerRegistry.instance().addMapLayer(mem_layer) |
QGIS版本3.x的
对于QGIS3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | layer = iface.activeLayer() feats = [ feat for feat in layer.getFeatures() ] epsg = layer.crs().postgisSrid() uri = "Polygon?crs=epsg:" + str(epsg) + "&field=id:integer&field=x:real&field=y:real&field=point_id:integer""&index=yes" mem_layer = QgsVectorLayer(uri, 'square_buffer', 'memory') prov = mem_layer.dataProvider() for i, feat in enumerate(feats): point = feat.geometry().asPoint() new_feat = QgsFeature() new_feat.setAttributes([i, point[0], point[1], feat.id()]) tmp_feat = feat.geometry().buffer(500, -1).boundingBox().asWktPolygon() new_feat.setGeometry(QgsGeometry.fromWkt(tmp_feat)) prov.addFeatures([new_feat]) ##### QGIS 3.x の場合 QgsProject.instance().addMapLayer(mem_layer) |
*可以为此线设置距离(低于500m)
4.粘贴到Python控制台,然后运行
粘贴到控制台的底部,它将看起来像这样,请按Enter
5.保存创建的正方形缓冲区
请注意导出,因为未保存square_buffer的新层
概要
您可以创建一个正方形缓冲区,但我是Console Python中代码复制和粘贴的妈妈。
如果您经常创建它,则应该创建自己的QGIS个人工具。
<铅>
或更多