이미 저장되어 있는 피쳐의 속성과 좌표를 변경하는 코드를 살펴보겠습니다. 먼저 피쳐의 속성값을 변경하는 코드는 다음과 같습니다.
QgsProject.instance().removeAllMapLayers() layer = QgsVectorLayer("D:/__Data__/세종특별자치시_36000/TL_SPRD_MANAGE.shp", "TL_SPRD_MANAGE", "ogr") QgsProject.instance().addMapLayers([layer]) layer.selectByExpression('"RN_CD" = \'3251036\'') idxField = layer.fields().indexOf('RN') features = layer.selectedFeatures() with edit(layer): for f in features: layer.changeAttributeValue(f.id(), idxField, "짱기로")
위의 코드는 먼저 RN_CD의 값이 3251036인 피쳐를 선택하고 선택된 피쳐의 RN 필드의 값을 “짱기로”로 변경하는 코드입니다.
다음은 위와 동일한 조건으로 피쳐를 선택하고 선택된 피쳐의 좌표를 편집하는 코드입니다.
QgsProject.instance().removeAllMapLayers() layer = QgsVectorLayer("D:/__Data__/세종특별자치시_36000/TL_SPRD_MANAGE.shp", "TL_SPRD_MANAGE", "ogr") QgsProject.instance().addMapLayers([layer]) layer.selectByExpression('"RN_CD" = \'2348142\'') features = layer.selectedFeatures() with edit(layer): for f in features: geom = QgsGeometry.fromWkt("MULTILINESTRING((968963 1820821, 993152 1819742, 993567 1844387))") layer.changeGeometry(f.id(),geom)
새롭게 정의할 도형의 좌표를 WKT 형식으로 지정하였습니다.