특정 Feature를 확대하기
아래의 코드는 선택된 Feature를 확대합니다.
canvas = iface.mapCanvas() id = 0 #canvas.setSelectionColor(QColor("red")) layer.select(id) canvas.zoomToSelected(layer)
아래의 코드는 Feature를 선택하지 않고 FID가 0인 Feature를 확대합니다.
canvas = iface.mapCanvas() id = 0 feat = layer.getFeature(id) geom = feat.geometry() bbox = geom.boundingBox() canvas.setExtent(bbox) canvas.refresh()
특정 Feature를 깜박이게 하기
canvas = iface.mapCanvas() id = 0 canvas.flashFeatureIds(layer, [id])
화면 좌표와 지도 좌표 간의 변환
아래의 코드는 화면 좌표 (100, 20)을 지도 좌표로 변환하고 다시 변환된 지도 좌표를 화면 좌표로 변환하는 코드입니다.
ptView = QPoint(100, 20) ptMap = canvas.getCoordinateTransform().toMapCoordinates(ptView) print(ptMap.x(), ptMap.y()) ptMap2 = QgsMapTool(canvas).toCanvasCoordinates(ptMap) print(ptMap2.x(), ptMap2.y())
다양한 형태의 지오메트리 생성
좌표를 지정해서 다양한 형태의 지오메트리를 생성하는 코드입니다.
geomPoint = QgsGeometry.fromPointXY(QgsPointXY(10000, 15000)) geomMultiPoint = QgsGeometry.fromMultiPointXY( [ QgsPointXY(10000, 15000), QgsPointXY(11000, 16000), ] ) geomPolyline = QgsGeometry.fromPolylineXY( [ QgsPointXY(10000, 15000), QgsPointXY(11000, 16000), QgsPointXY(12000, 17000), QgsPointXY(13000, 18000), ] ) geomPolyline = QgsGeometry.fromMultiPolylineXY( [ [ QgsPointXY(10000, 15000), QgsPointXY(11000, 16000), QgsPointXY(12000, 17000), QgsPointXY(13000, 18000), ] ] ) pX = 971195 pY = 1841488 geomPolygon = QgsGeometry.fromPolygonXY( [ [ QgsPointXY(pX, pY), QgsPointXY(pX+1000, pY), QgsPointXY(pX+1000, pY+1000), QgsPointXY(pX, pY+1000), ], [ QgsPointXY(pX+100, pY+100), QgsPointXY(pX+900, pY+100), QgsPointXY(pX+900, pY+900), QgsPointXY(pX+100, pY+900), ] ] ) geomPolygon = QgsGeometry.fromMultiPolygonXY( [ [ [ QgsPointXY(pX, pY), QgsPointXY(pX+1000, pY), QgsPointXY(pX+1000, pY+1000), QgsPointXY(pX, pY+1000), ], [ QgsPointXY(pX+100, pY+100), QgsPointXY(pX+900, pY+100), QgsPointXY(pX+900, pY+900), QgsPointXY(pX+100, pY+900), ] ] ] )
아래는 Python 언어의 특징을 이용한 효율적인 코드 작성입니다.
pts = [ (583899.8, 8177297.19), (583900.23, 8177262.52), (583896.49, 8177262.47), (583895.96, 8177297.29), (583899.8, 8177297.19) ] geomPolygon = QgsGeometry.fromPolygonXY( [[ QgsPointXY( xy[0], xy[1] ) for xy in pts ]] )