특정 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 ]] )