QGIS에서의 사각 버퍼 작성 방법
목적
QGIS에는 지점에서 원 버퍼를 만드는 기능이 있지만 사각형 버퍼의 기존 기능은 현재 없다.
QGIS의 파이썬 콘솔에서 사각형 버퍼를 만드는 방법입니다.
QGIS2.x용 SOURCE (이 기사는 QGIS3.x도 지원합니다)
소개
지점 데이터의 좌표계 (CRS)를 의식합시다.
지점 데이터의 좌표계 (CRS)를 의식합시다.
QGIS에서 선택 CRS 사례
사각형 버퍼 만들기
1. 레이어를 클릭하여 선택
2. Python Console 보기
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로 실행
5. 만든 사각형 Buffer 저장
square_buffer의 새 레이어가 저장되지 않으므로 내보내기를 의식하십시오
요약
사각형 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 개인 툴을 스스로 만든 것이 좋다.
이상
Reference
이 문제에 관하여(QGIS에서의 사각 버퍼 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bordoray/items/9a9324390b9fd0eadd93텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)