안녕하세요? 이번 글은 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