QGIS에서의 사각 버퍼 작성 방법
목적
QGIS에는 지점에서 원 버퍼를 만드는 기능이 있지만 사각형 버퍼의 기존 기능은 현재 없다.
QGIS의 파이썬 콘솔에서 사각형 버퍼를 만드는 방법입니다.
![](https://s1.md5.ltd/image/3476283ae7556d2e6eb0ffa390427731.png)
QGIS2.x용 SOURCE (이 기사는 QGIS3.x도 지원합니다)
소개
지점 데이터의 좌표계 (CRS)를 의식합시다.
지점 데이터의 좌표계 (CRS)를 의식합시다.
![:scream:](https://s1.md5.ltd/image/3259cd89b72fefb9ef2f4245b2d525c4.png)
![:thumbsup_tone2:](https://s1.md5.ltd/image/d479ea2d3a9f6193f9f22287ee39f02c.png)
QGIS에서 선택 CRS 사례
![](https://s1.md5.ltd/image/f1cf1293337179fce91aec5d18cc90e5.png)
사각형 버퍼 만들기
1. 레이어를 클릭하여 선택
![](https://s1.md5.ltd/image/4f25229136a9c31143a25c9ae47a783c.png)
2. Python Console 보기
![](https://s1.md5.ltd/image/d6d50b911a049de81aab903d84b631e9.png)
3. 아래의 코드 복사
QGIS version 2.x용
QGIS2용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 version 3.x용
QGIS3용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)tmp_feat = feat.geometry().buffer(500, -1).boundingBox().asWktPolygon()
4. Python Console에 Paste하고 실행
Console의 아래 부분에 Paste하면 이 느낌이 되어 Enter로 실행
![](https://s1.md5.ltd/image/01001b95dc618d52ca6e5ca5d580c522.png)
5. 만든 사각형 Buffer 저장
square_buffer의 새 레이어가 저장되지 않으므로 내보내기를 의식하십시오 ![:bulb:](https://s1.md5.ltd/image/f96fa98bd909269b00023678c4b36fc5.png)
![](https://s1.md5.ltd/image/86ed4ec38a444bcd53f69b0fee13df3e.png)
요약
사각형 Buffer를 만들 수 있지만 Console Python에서 코드의 copipe 엄마입니다.
잘 작성하게 되면, QGIS 개인 툴을 스스로 만든 것이 좋다.
이상
Reference
이 문제에 관하여(QGIS에서의 사각 버퍼 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bordoray/items/9a9324390b9fd0eadd93
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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)
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)
사각형 Buffer를 만들 수 있지만 Console Python에서 코드의 copipe 엄마입니다.
잘 작성하게 되면, QGIS 개인 툴을 스스로 만든 것이 좋다.
이상
![:v_tone2:](https://s1.md5.ltd/image/e2419ea36133556e4cfb0955ba5efe72.png)
![:red_circle:](https://s1.md5.ltd/image/337c19ce39adae652d12b5d7c9fcefb7.png)
![:black_circle:](https://s1.md5.ltd/image/6d809c99b99e2fc53601d93baa681daf.png)
Reference
이 문제에 관하여(QGIS에서의 사각 버퍼 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bordoray/items/9a9324390b9fd0eadd93텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)