REMOTE SENSING

Google Earth Engine: Vworld 레이어 추가하는 방법 소개

유병혁 2024. 1. 31. 19:14

안녕하세요? 이번 글은 Google Earth Engine에서 Vworld 레이어 추가하는 방법을 정리해 보겠습니다. GEE가 다양한 배경지도를 제공하고 있지만, 국내 사용자 입장에서는 대한민국 지명 표현이 중요하기 때문에 이런 경우에 활용하시면 좋겠습니다(예: 동해  '일본해' 표기).

 

실습을 위해 대한민국 행정경계 레이어를 지도 시각화해 보겠습니다. 아래와 같이 현재 배경지도는 OpenStreetMap으로 설정되어 있습니다.  

# 패키지 호출
import ee, geemap

ee.Authenticate() # Earth Engine 인증
ee.Initialize(project='my-earth-engine-project') # Earth Engine 초기화

# FAO GAUL: Global Administrative Unit Layers 2015, Country Boundaries
countries = ee.FeatureCollection("FAO/GAUL/2015/level0")

# 'ADM0_NAME' 필드를 기준으로 '대한민국' 필터링
kr = countries.filter(ee.Filter.eq('ADM0_NAME', 'Republic of Korea'))

# 지도 생성
Map = geemap.Map(layout={'height':'400px', 'width':'800px'})

# 지도에 경계 표시
Map.centerObject(kr, 6) # 경계 중심으로 지도 확대
Map.addLayer(kr, {}, "Republic of Korea")

# 지도 출력
Map

여기에 Vworld가 제공하는 5종 배경지도를 추가해 보겠습니다. Vworld는 배경지도, 영상지도, 하이브리드지도, 백지도, Midnight 지도를 제공하고 있습니다. `Map.add_tile_layer()`에서 url은 배경지도의 위치, name은 레이어 이름, attribution은 지도 하단에 표기되는 저작권정보 표시, shown은 레이어가 보여지는 여부(True/False)를 나타냅니다.

 

여기서는 5개 레이어가 추가되고, 이중 영상지도와 하이브리드지도는 바로 보여지도록(shown=True) 설정하였습니다. 실행 결과는 아래와 같습니다. 

# Vworld 배경지도
Map.add_tile_layer(
    url='https://xdworld.vworld.kr/2d/Base/service/{z}/{x}/{y}.png',
    name='Vworld Base',
    attribution='Vworld',
    shown=False
)
# Vworld 영상지도
Map.add_tile_layer(
    url='https://xdworld.vworld.kr/2d/Satellite/service/{z}/{x}/{y}.jpeg',
    name='Vworld Satellite',
    attribution='Vworld',
    shown=True
)
# Vworld 하이브리드지도
Map.add_tile_layer(
    url='https://xdworld.vworld.kr/2d/Hybrid/service/{z}/{x}/{y}.png',
    name='Vworld Hybrid',
    attribution='Vworld',
    shown=True
)
# Vworld 백지도
Map.add_tile_layer(
    url='https://xdworld.vworld.kr/2d/white/service/{z}/{x}/{y}.png',
    name='Vworld White',
    attribution='Vworld',
    shown=False
)
# Vworld Midnight지도
Map.add_tile_layer(
    url='https://xdworld.vworld.kr/2d/midnight/service/{z}/{x}/{y}.png',
    name='Vworld Midnight',
    attribution='Vworld',
    shown=False
)
Map

 

또한 각각의 Vworld 레이어는 개별 TileLayer 객체로 정의할 수도 있습니다. 이렇게 하면 Vworld 레이어의 재사용이 보다 수월해 집니다. 소개드린 두 방식을 목적에 따라 선택해 주시면 되겠습니다.

from ipyleaflet import TileLayer

# Vworld 배경지도 객체
Vworld_Base = TileLayer(
    url='https://xdworld.vworld.kr/2d/Base/service/{z}/{x}/{y}.png',
    name='Vworld Base',
    attribution='Vworld',
)

# 지도 생성
Map = geemap.Map(layout={'height':'400px', 'width':'800px'})

# 지도에 경계 표시
Map.centerObject(kr, 6) # 경계 중심으로 지도 확대
Map.add_layer(Vworld_Base)

# 지도 출력
Map