PyQGIS Cookbook의 http://documentation.qgis.org/2.0/en/docs/pyqgis_developer_cookbook/geometry.html 에서 지오메트리 처리에 대한 페이지를 방문하고 다시 방문 했지만 어떻게 얻을 수 있는지 알 수없는 것 같습니다. 파이썬 콘솔에서 그릴 다각형. 누구든지 도울 수 있습니까?
PyQGIS Cookbook의 http://documentation.qgis.org/2.0/en/docs/pyqgis_developer_cookbook/geometry.html 에서 지오메트리 처리에 대한 페이지를 방문하고 다시 방문 했지만 어떻게 얻을 수 있는지 알 수없는 것 같습니다. 파이썬 콘솔에서 그릴 다각형. 누구든지 도울 수 있습니까?
답변:
그것은 실제로 복잡하지 않습니다 . 벡터 에서 메모리 공급자 를 보십시오 : :
QgsPoint(x,y)
및QgsGeometry.fromPoint(QgsPoint(x,y))
QgsGeometry.fromPolyline([QgsPoint(x1,y1),QgsPoint(x2,y2)]))
QgsGeometry.fromPolygon([[QgsPoint(x1,y1),QgsPoint(x2,y2), QgsPoint(x3,y3)]])
1) 두 가지 점 :
# create a memory layer with two points
layer = QgsVectorLayer('Point', 'points' , "memory")
pr = layer.dataProvider()
# add the first point
pt = QgsFeature()
point1 = QgsPoint(50,50)
pt.setGeometry(QgsGeometry.fromPoint(point1))
pr.addFeatures([pt])
# update extent of the layer
layer.updateExtents()
# add the second point
pt = QgsFeature()
point2 = QgsPoint(100,150)
pt.setGeometry(QgsGeometry.fromPoint(point2))
pr.addFeatures([pt])
# update extent
layer.updateExtents()
# add the layer to the canvas
QgsMapLayerRegistry.instance().addMapLayers([layer])
2) 두 지점을 연결하는 선
layer = QgsVectorLayer('LineString', 'line' , "memory")
pr = layer.dataProvider()
line = QgsFeature()
line.setGeometry(QgsGeometry.fromPolyline([point1,point2]))
pr.addFeatures([line])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])
3) 점을 덮는 다각형
layer = QgsVectorLayer('Polygon', 'poly' , "memory")
pr = layer.dataProvider()
poly = QgsFeature()
points = [point1,QgsPoint(50,150),point2,QgsPoint(100,50)]
# or points = [QgsPoint(50,50),QgsPoint(50,150),QgsPoint(100,150),QgsPoint(100,50)]
poly.setGeometry(QgsGeometry.fromPolygon([points]))
pr.addFeatures([poly])
layer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayers([layer])
-
QGIS 3.0 이상의 변경 사항 :
QGIS 3.0 이상에서는 위의 작업 흐름이 여전히 정확하지만 특정 기능이 변경되었습니다. 참조 https://qgis.org/api/api_break.html를
위 코드를 업데이트하려면 다음 기능을 변경하십시오.
QgsPoint -> QgsPointXY
QgsfromPoint -> QgsfromPointXY
QgsfromPolyline -> QgsfromPolylineXY
QgsfromPolygon -> QgsfromPolylineXY
QgsfromPolyline -> QgsfromPolylineXY
QgsMapLayerRegistry -> QgsProject