안녕하세요? 이번 글은 "첫 번째 QGIS 플러그인 만들기" 시리즈 두번째로, "핵심 기능 추가"에 대해 다뤄봅니다. 이 시리즈는 Spatial Thoughts 우자발 간디(Ujaval Gandhi) "Building Your First QGIS Plugin (Full Workshop)" 내용을 재정리한 것입니다. 유익한 콘텐츠를 공유해 주신 우자발 간디 님께 감사드리며, 시작해 보겠습니다.
XYZ Tile Layer 로드 기능 추가
이번에는 버튼을 클릭했을 때 XYZ Tile Layer를 로드하는 기능을 추가해 보겠습니다. 여기서는 OpenStreetMap Standard XYZ 레이어를 사용합니다. 이 기능을 통해 사용자는 버튼 클릭만으로 OpenStreetMap 타일 레이어를 QGIS에 쉽게 추가할 수 있습니다.
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 레이어가 추가됩니다!
- 첫 번째 QGIS 플러그인 만들기 - (1) 플러그인 생성
- 첫 번째 QGIS 플러그인 만들기 - (2) 핵심 기능 추가
- 첫 번째 QGIS 플러그인 만들기 - (3) 사용자 인터페이스 추가
- 첫 번째 QGIS 플러그인 만들기 - (4) 플러그인 패키징 및 공유