중요

번역은 여러분이 참여할 수 있는 커뮤니티 활동입니다. 이 페이지는 현재 100.00% 번역되었습니다.

17. 공간 처리 플러그인 작성하기

여러분이 개발하려는 플러그인의 유형에 따라, 플러그인의 기능을 공간 처리 알고리즘으로 (또는 공간 처리 알고리즘 집합으로) 추가하는 편이 더 나을 수도 있습니다. QGIS 안에 더 잘 통합시킬 수 있고, (모델 작성자 또는 배치(batch) 공간 처리 인터페이스 같은 공간 처리 프레임워크 구성 요소에서 실행할 수 있기 때문에) 추가 기능을 제공할 수 있으며, (공간 처리 프레임워크가 작업의 상당 부분을 처리해줄 것이기 때문에) 개발 시간도 절약될 것입니다.

이런 알고리즘을 배포하려면, 공간 처리 툴박스에 알고리즘을 추가하는 새 플러그인을 생성해야 합니다. 이 플러그인은 알고리즘 제공자를 담고 있어야 하는데, 플러그인이 인스턴스화될 때 이 알고리즘 제공자를 등록해야 합니다.

17.1. 처음부터 생성하기

알고리즘 제공자를 담고 있는 플러그인을 처음부터 생성하려면, 플러그인 작성자(Plugin Builder)를 사용해서 다음 단계들을 따라가면 됩니다:

  1. 플러그인 작성자 플러그인을 설치하십시오.

  2. 플러그인 작성자를 사용해서 새 플러그인을 생성하십시오. 플러그인 작성자가 사용할 템플릿을 고르라고 할 때 “공간 처리 제공자(Processing provider)”를 선택하십시오.

  3. 생성된 플러그인은 단일 알고리즘을 가진 제공자를 담고 있습니다. 제공자 파일과 알고리즘 파일 둘 다 충분한 주석들과 제공자를 수정하고 추가적인 알고리즘을 추가하는 방법에 대한 정보를 담고 있습니다. 자세한 정보를 알고 싶다면 이 파일들을 참조하세요.

17.2. 플러그인을 업데이트하기

공간 처리 프레임워크에 여러분의 기존 플러그인을 추가하고 싶은 경우, 몇몇 코드를 추가해야 합니다.

  1. metadata.txt 파일에 다음 변수를 추가해야 합니다:

    hasProcessingProvider=yes
    
  2. initGui 메소드를 사용해서 플러그인을 초기 설정하는 파이썬 파일에서 몇 줄을 다음과 같이 조정해줘야 합니다:

     1from qgis.core import QgsApplication
     2from .processing_provider.provider import Provider
     3
     4class YourPluginName:
     5
     6    def __init__(self):
     7        self.provider = None
     8
     9    def initProcessing(self):
    10        self.provider = Provider()
    11        QgsApplication.processingRegistry().addProvider(self.provider)
    12
    13    def initGui(self):
    14        self.initProcessing()
    15
    16    def unload(self):
    17        QgsApplication.processingRegistry().removeProvider(self.provider)
    
  3. processing_provider 폴더를 생성하고 다음 파일 3개를 생성할 수 있습니다:

    • 아무 내용도 없는 __init__.py 파일 — 이 파일은 무결한 파이썬 패키지를 만들기 위해 필요합니다.

    • provider.py 파일 — 이 파일이 공간 처리 제공자를 생성하고 여러분의 알고리즘을 알릴 것입니다.

       1from qgis.core import QgsProcessingProvider
       2from qgis.PyQt.QtGui import QIcon
       3
       4from .example_processing_algorithm import ExampleProcessingAlgorithm
       5
       6
       7class Provider(QgsProcessingProvider):
       8
       9    """ The provider of our plugin. """
      10
      11    def loadAlgorithms(self):
      12        """ Load each algorithm into the current provider. """
      13        self.addAlgorithm(ExampleProcessingAlgorithm())
      14        # add additional algorithms here
      15        # self.addAlgorithm(MyOtherAlgorithm())
      16
      17    def id(self) -> str:
      18        """The ID of your plugin, used for identifying the provider.
      19
      20        This string should be a unique, short, character only string,
      21        eg "qgis" or "gdal". This string should not be localised.
      22        """
      23        return 'yourplugin'
      24
      25    def name(self) -> str:
      26        """The human friendly name of your plugin in Processing.
      27
      28        This string should be as short as possible (e.g. "Lastools", not
      29        "Lastools version 1.0.1 64-bit") and localised.
      30        """
      31        return self.tr('Your plugin')
      32
      33    def icon(self) -> QIcon:
      34        """Should return a QIcon which is used for your provider inside
      35        the Processing toolbox.
      36        """
      37        return QgsProcessingProvider.icon(self)
      
    • example_processing_algorithm.py 파일 — 이 파일은 예시 알고리즘 파일을 담습니다. 이 파일에 스크립트 템플릿 파일 의 내용을 복사/붙여넣기한 다음 여러분의 필요에 따라 업데이트하십시오.

트리가 다음과 비슷하게 보여야 합니다:

1└── your_plugin_root_folder
2   ├── __init__.py
3   ├── LICENSE
4   ├── metadata.txt
5   └── processing_provider
6         ├── example_processing_algorithm.py
7         ├── __init__.py
8         └── provider.py
  1. 이제 QGIS에 플러그인을 다시 불러오면 공간 처리 툴박스와 모델 작성자에서 여러분의 예시 스크립트를 볼 수 있을 것입니다.