GIS

PyQGIS: 종 출현 좌표 시각화 코드 예제

유병혁 2024. 12. 24. 09:50

안녕하세요? PyQGIS를 통해 종 출현(Presence) 좌표를 시각화하는 예제 코드입니다. QGIS 실행 후 "플러그인 > 파이썬 콘솔"에서 실행하실 수 있습니다.

 

먼저, 필요한 라이브러리들을 호출합니다.

import os
from PyQt5.QtGui import QColor
from qgis.core import (
    QgsVectorLayer,
    QgsProject,
    QgsSymbol,
    QgsSingleSymbolRenderer,
)

 

GeoPackage 파일을 QGIS 레이어로 로드하고 스타일을 설정하는 함수를 정의합니다. GeoPackage 경로(gpkg_path)와 기타 스타일 옵션을 입력받아, QGIS에 레이어를 추가하는데요, 여기서는 레이어의 기본 심볼 색상, 투명도, 크기를 설정해 봤습니다.

def add_presence_layer(
    gpkg_path, layer_name="Presence", color="blue", opacity=0.5, size=2.0
):
    """
    지정된 GeoPackage 파일 경로를 기반으로 QGIS 레이어를 추가하고 스타일을 설정

    :param gpkg_path: GeoPackage 파일 경로
    :param layer_name: 레이어 이름
    :param color: 심볼 색상 (기본값: "blue")
    :param opacity: 심볼 투명도 (0.0 ~ 1.0, 기본값: 0.5)
    :param size: 심볼 크기 (기본값: 2.0)
    """
    # 벡터 레이어 로드
    layer = QgsVectorLayer(gpkg_path, layer_name, "ogr")

    if not layer.isValid():
        print(f"Failed to load layer from {gpkg_path}")
        return
    
    # 프로젝트에 레이어 추가
    QgsProject.instance().addMapLayer(layer)

    # 심볼 스타일 설정
    symbol = QgsSymbol.defaultSymbol(layer.geometryType())
    symbol.setColor(QColor(color)) # 색상 설정
    symbol.setOpacity(opacity) # 투명도 설정
    symbol.setSize(size) # 포인트 크기 설정

    # 렌더러 설정
    renderer = QgsSingleSymbolRenderer(symbol)
    layer.setRenderer(renderer)
    layer.triggerRepaint()

    print(f"Layer '{layer_name}' added and styled successfully!")

 

GeoPackage 파일 경로를 설정하고 add_presence_layer 함수를 호출하여 레이어를 추가합니다. VworldBase 레이어를 함께 추가해 봤습니다.

# 함수 호출
gpkg_path = "D:/GEODATA/presence.gpkg"
add_presence_layer(gpkg_path)