GIS

첫 번째 QGIS 플러그인 만들기 - (2) 핵심 기능 추가

유병혁 2024. 12. 5. 06:20

안녕하세요? 이번 글은 "첫 번째 QGIS 플러그인 만들기" 시리즈 두번째로, "핵심 기능 추가"에 대해 다뤄봅니다. 이 시리즈는 Spatial Thoughts 우자발 간디(Ujaval Gandhi) "Building Your First QGIS Plugin (Full Workshop)" 내용을 재정리한 것입니다. 유익한 콘텐츠를 공유해 주신 우자발 간디 님께 감사드리며, 시작해 보겠습니다.

 

Building Your First QGIS Plugin (Full workshop)

Get a Text Editor Any kind of software development requires a good text editor. If you already have a favorite text editor or an IDE (Integrated Development Environment), you may use it for this workshop. Otherwise, each platform offers a wide variety of f

courses.spatialthoughts.com

XYZ Tile Layer 로드 기능 추가

이번에는 버튼을 클릭했을 때 XYZ Tile Layer를 로드하는 기능을 추가해 보겠습니다. 여기서는 OpenStreetMap Standard XYZ 레이어를 사용합니다. 이 기능을 통해 사용자는 버튼 클릭만으로 OpenStreetMap 타일 레이어를 QGIS에 쉽게 추가할 수 있습니다.

 

21. Cheat sheet for PyQGIS — QGIS Documentation documentation

© Copyright 2002-now, QGIS project. Last updated on 2024 Dec 04, 07:10 +0000.

docs.qgis.org

from qgis.core import QgsRasterLayer, QgsProject, QgsCoordinateReferenceSystem
    def run(self):
        basemap_url = 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'
        zmin = 0
        zmax = 19
        crs = 'EPSG:3857'
        
        uri = f'type=xyz&url={basemap_url}&zmax={zmax}&zmin={zmin}$crs={crs}'
        rlayer = QgsRasterLayer(uri, 'OpenStreetMap', 'wms')
        if rlayer.isValid():
            QgsProject.instance().addMapLayer(rlayer)
            self.iface.messageBar().pushSuccess('Success', 'Basemap Layer Loaded')
        else:
            self.iface.messageBar().pushCritical('Error', 'Invalid Basemap Layer')

Plugin Reloader 플러그인

QGIS 플러그인에서 변경 사항의 결과를 확인하려면 QGIS를 재시작해야 합니다. 이는 플러그인 개발 중에 상당히 번거로울 수 있습니다. 하지만 Plugin Reloader 플러그인은 QGIS를 재시작하지 않고 선택한 플러그인을 다시 로드할 수 있는 유용한 기능을 제공합니다. 이를 통해 플러그인 개발 및 테스트가 훨씬 더 효율적으로 이루어질 수 있습니다.

 

아래와 같이 Reload a plugin 버튼을 클릭한 후, basemap_loader 플러그인을 지정해 주시면 됩니다.

 

자, 이제 버튼을 추가하면 OpenStreetMap 레이어가 추가됩니다!