플러그인 레이어 사용

여러분의 플러그인이 맵 레이어를 렌더링하는 데 자신만의 메소드를 이용할 경우, 그 작업을 실행하기 위해 QgsPluginLayer 클래스에 기반한 사용자 지정 레이어 유형을 작성하는 것이 가장 좋습니다.

TODO:

오류가 없는지 확인하고, QgsPluginLayer 클래스의 괜찮은 사용 케이스를 자세히 설명하고, ...

QgsPluginLayer 상속 클래스 만들기

다음은 최소한의 QgsPluginLayer 클래스를 구현하는 예시입니다. 워터마크 예제 플러그인 에서 발췌한 코드입니다.

class WatermarkPluginLayer(QgsPluginLayer):

  LAYER_TYPE="watermark"

  def __init__(self):
    QgsPluginLayer.__init__(self, WatermarkPluginLayer.LAYER_TYPE, "Watermark plugin layer")
    self.setValid(True)

  def draw(self, rendererContext):
    image = QImage("myimage.png")
    painter = rendererContext.painter()
    painter.save()
    painter.drawImage(10, 10, image)
    painter.restore()
    return True

프로젝트 파일에 특정 정보를 읽고 쓰는 메소드도 추가할 수 있습니다.

def readXml(self, node):
  pass

def writeXml(self, node, doc):
  pass

플러그인 레이어를 담고 있는 프로젝트를 불러올 경우, 팩토리 클래스가 필요합니다.

class WatermarkPluginLayerType(QgsPluginLayerType):

  def __init__(self):
    QgsPluginLayerType.__init__(self, WatermarkPluginLayer.LAYER_TYPE)

  def createLayer(self):
    return WatermarkPluginLayer()

레이어 속성에 사용자 지정 정보를 표출하기 위한 코드도 추가할 수 있습니다.

def showLayerProperties(self, layer):
  pass