파이썬에서는 QgsVectorLayer.writeLayerXML 및 QgsVectorLayer.readLayerXML을 사용하여 데이터 소스를 직접 수정하여 아래 예제와 같이 즉시 DOM 레이어를 수정하고 레이어를 다시로드 할 수 있습니다.
from PyQt4.QtXml import *
from qgis.core import *
from PyQt4.QtXml import *
layer = self.iface.legendInterface().currentLayer()
newDatasource = "NEW DATASOURCE STRING" # get datasource from layer properties general tab
newDatasourceProvider = "ogr" # possible values: (ogr, )
# read layer DOM definition
XMLDocument = QDomDocument("style")
XMLMapLayers = QDomElement()
XMLMapLayers = XMLDocument.createElement("maplayers")
XMLMapLayer = QDomElement()
XMLMapLayer = XMLDocument.createElement("maplayer")
layer.writeLayerXML(XMLMapLayer,XMLDocument)
# modify DOM element with new layer reference
XMLMapLayer.firstChildElement("datasource").firstChild().setNodeValue(newDatasource)
XMLMapLayer.firstChildElement("provider").firstChild().setNodeValue(newDatasourceProvider)
XMLMapLayers.appendChild(XMLMapLayer)
XMLDocument.appendChild(XMLMapLayers)
# reload layer definition
self.layer.readLayerXML(XMLMapLayer)
self.layer.reload()
# apply to canvas and legend
self.iface.actionDraw().trigger()
self.iface.legendInterface().refreshLayerSymbology(self.layer)
클릭 레이어 및 기능에 대한 작업을 수행 할 수 있는 기능이 PickLayer 플러그인 에 포함되었습니다.