GIS

QGIS 플러그인 개발을 위한 Plugin Builder와 Plugin Reloader 사용법 소개

유병혁 2016. 12. 12. 00:01

이번 글은 QGIS 플러그인 개발을 위한 Plugin Builder와 Plugin Reloader 사용법을 정리해보겠습니다.

저는 주로 파이썬 콘솔을 이용해 왔는데요, 자주 쓰는 알고리듬을 플러그인으로 개발해 놓고자 합니다.

 

Plugin Builder는 개발자의 편의를 위해 QGIS 플러그인 템플릿을 자동 생성해주는 기능이고,

Plugin Reloader는 한 번 클릭으로 QGIS내 플러그인을 다시 로드해주는 기능을 제공합니다.

 

먼저, Plugin Builder를 설치해 보도록 하겠습니다. 상단 메뉴에서 '플러그인 > 플러그인 관리 및 설치'를 클릭하고,

 

'Plugin Builder'를 검색한 후 설치합니다.

 

설치 완료 후, 아래와 같이 '플러그인 > Plugin Builder > Plugin Builder'를 클릭합니다.

 

QGIS Plugin Builder의 실행 화면은 아래와 같습니다.

 

각 파라미터는 관련 정보는 다음 링크를 참조하시기 바랍니다: http://g-sherman.github.io/Qgis-Plugin-Builder/

저는 아래와 같이 일전에 블로그에 소개드렸던 'QGIS 파이썬 콘솔에서 UAV 기반 RGB 영상의 식생지수 계산하기

(http://blog.daum.net/geoscience/961)'를 Vegetation UAV 플러그인으로 개발한다는 가정하에 작성하였습니다.

 

QGIS Plugin Builder의 각 단계별로 계속 진행합니다.

 

아래 콤보박스는 템플릿의 유형을 선택하는 내용입니다.

 

아래 텍스트는 메뉴 항목에 표시될 텍스트를, 콤보박스는 해당 플러그인이 표시될 메뉴를 선택해줍니다.

 

저는 Tool button with dialog 템플릿을 선택했고, Plugins 메뉴에 Vegetation UAV로 표시되도록 설정하였습니다.

계속 QGIS Plugin Builder 설정을 진행하고,

 

플러그인 디렉토리는 C:\Users\UserName\.qgis2\python\plugins 위치로 선택해 줍니다.

 

이제 Plugin Builder Results 화면이 나오는데요, 화면에서 보이는 What's Next 단계를 실행해 주시면 되겠습니다. 친절하죠?!

 

이제 OSGeo4W Shell을 실행하고,

 

플러그인이 저장되어 있는 폴더로 이동합니다.

 

해당 폴더에는 현재 아래와 같이 파일들이 위치하고 있는데요,

 

아래와 같이 pyrcc4 -o resources.py resources.qrc를 입력하여 컴파일해 줍니다.

 

이제 QGIS를 실행하고 플러그인 창에서 해당 플러그인을 검색하고 체크해주시면 됩니다.

 

아래와 같이 '플러그인 > Vegetation UAV > Vegetation UAV'가 위치하고 있는데요, 한 번 실행해볼까요?!

 

현재는 아래와 같이 기본적인 대화상자가 실행되고 있습니다.

이제 이 대화상자의 변경과 파이썬 코딩하는 방법을 살펴보도록 하겠습니다.

 

먼저, 대화상자를 변경하기 위해 Qt Designer를 실행하도록 하겠습니다.

 

아래와 같이 '새 폼'에서 '열기'를 클릭하고, 플러그인 폴더로 이동합니다.

 

아래와 같이 vegetation_uav_dialog_base.ui 파일을 선택합니다.

 

대화상자 창이 실행되었는데요,

 

좌측 위젯 상자에서 'Display Widgets > Label', 'Input Widget > Combo Box' ,

'Input Widget > Line Edit', 'Buttons > Push Button'를 이용하여 대화상자를 변경해 줍니다.

 

저는 아래와 같이 화면을 변경하였는데요, UAV 영상에 초과녹색식생지수(ExG) 알고리듬을 적용하는 내용입니다.

 

이제 변경된 대화상자를 제가 만든 Vegetation UAV 플러그인에 적용해볼 텐데요,

이렇게 변경된 플러그인을 다시 로드해주는 플러그인이 Pluging Reloader입니다.

 

상단 메뉴에서 '플러그인 > Plugin Reloader > Choose a plugin to be reloaded'를 선택하면,

 

아래와 같이 'Configure Plugin reloader' 창이 실행됩니다.

Select the plugin you want to reload에서 리로드할 플러그인을 선택해 줍니다.

 

이제 '플러그인 > Plugin Reloader > Reload plugin: VegetationUAV'를 실행해주면,

 

아래와 같이 수정된 대화상자가 반영되어 실행되는 것을 보실 수 있습니다. 이제 파이썬 코딩만 해주면 되겠죠?!

 

플러그인 폴더에서 vegetation_uav.py를 우클릭하고 Edit with IDLE를 실행합니다.

 

예제로 Select a raster layer 콤보박스에 래스터 레이어만을 추가하는 코드를 작성해 보겠습니다.

        self.dlg.comboBox.clear()
        layers = self.iface.legendInterface().layers()
        layer_list = []
        for layer in layers:
            if layer.type() == layer.RasterLayer:
                layer_list.append(layer.name())
        self.dlg.comboBox.addItems(layer_list)

 

플러그인 폴더에서 icon.png 파일도 아래와 같이 변경해볼까요?!

icon.png 파일의 변경을 위해서는 pyrcc4 컴파일을 한 번 더 실행해야 합니다.

 

자, 이제 QGIS에서 다시 Plugin Reloader를 실행한 후,

 

아이콘이 변경된 Vegetation UAV를 클릭해 보면 변경된 코드가 반영되어 있겠죠?!

 

코드 테스트를 위해 아래와 같이 벡터 레이어와 다수의 래스터 레이어를 추가하고,

 

Vegetation UAV를 실행한 결과는 아래와 같습니다. 래스터 데이터만 콤보박스에 추가되어 있는 것을 보실 수 있습니다.

QGIS 플러그인 템플릿을 제공하는 Plugin Builder, 플러그인 변경을 바로 로드할 수 있는 Plugin Reloader, 둘 다 개발자들에게 유용하겠죠?!