0.1 기본배경

providers 객체 안에 다양한 배경지도 목록을 활용할 수 있음

library(leaflet)
library(dplyr)
leaflet() %>% 
    setView(lng=127,lat= 37, zoom = 7)%>%
    addTiles()
leaflet() %>% 
    setView(lng=127,lat= 37, zoom = 7)%>%
    addProviderTiles(providers$Stamen.Toner)

0.2 줌 및 범위 조절

# 특정 범위 시각화
leaflet() %>% 
    fitBounds(lng1=126, lat1=37, lng2=128, lat2=38)%>%
    addProviderTiles(providers$Stamen.Toner)
# 줌 범위 조절
leaflet(options = leafletOptions(minZoom = 6,maxZoom = 9)) %>% 
    setView(lng=127,lat= 37, zoom = 7)%>%
    addProviderTiles(providers$Stamen.Toner)
# 특정 범위 고정
leaflet() %>% 
    setView(lng=127,lat= 37, zoom = 7)%>%
    addProviderTiles(providers$Stamen.Toner)%>%
    setMaxBounds(lng1=127.5, lat1=37.5, lng2=128, lat2=38)

0.3 줌 효과

leaflet() %>% 
    addTiles()%>%
    flyToBounds(lng1=126, lat1=37, lng2=128, lat2=38)
leaflet() %>% 
    addTiles()%>%
    flyTo(lng=127,lat=37,zoom=8)

0.4 마커

# 마커
leaflet(data = quakes[1:20,]) %>% addTiles() %>%
  addMarkers(~long, ~lat, popup = ~as.character(mag), label = ~as.character(mag))
# 팝업
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 7)%>%
    addPopups(127, 37, "Here is the <b>lat =127 lng= 37</b>")
# 이미지 마커
Rlogo <- file.path(R.home("doc"), "html", "logo.jpg")
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 8)%>%
    addMarkers(  127, 37, 
      icon = list(iconUrl = Rlogo, 
                  iconSize = c(30, 20)
  ), popup = "R was born here!"
)
# 원
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 8)%>%
    addCircles(127, 37, radius =10000,color='#ff0000')
# 사각형
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 8)%>%
    addRectangles(lng1=126, lat1=37, lng2=128, lat2=38,
         color = "red", fill = FALSE, dashArray = "5,5", weight = 3)
# 다각형
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 8)%>%
    addPolygons(c(126,128,127),c(37,38,37), layerId = "foo")
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 8)%>%
    addPolylines(c(126,128,127),c(37,38,36))
# 하이라이트
leaflet() %>% 
    addTiles()%>%
    setView(lng=127,lat= 37, zoom = 8)%>%
    addRectangles(lng1=126, lat1=37, lng2=128, lat2=38,
         color = "red", dashArray = "5,5", weight = 3,
         highlightOptions = 
             highlightOptions(color = "white", weight = 2,bringToFront = TRUE))

0.5 지도 자료 시각화하기

rester 패키지의 getData를 활용하면 gis 자료를 편리하게 수집할 수 있다. 아래에서 활용하는 자료 중 SRTM은 고도 자료이며, GADM은 행정구역도이다. GADM의 level은 0을 주면 국가, 1을 주면 시도 단위로 구분해준다.

library(raster)
#rester data
grid <- merge(raster::getData('SRTM', lon=126,lat=37),
              raster::getData('SRTM', lon=126,lat=35))
grid=aggregate(grid, fact=50)

plot(grid)

#vector data
kor=raster::getData('GADM',country='KOR',level=1)
plot(kor)

# 자료 추출
seoul=kor[kor@data$NAME_1=='Seoul',]
crop_alt=mask(crop(grid,seoul),seoul)
plot(crop_alt)

grid.pal=colorNumeric(palette = "RdYlGn",values(crop_alt),
                      na.color = 'transparent', reverse = TRUE)

leaflet() %>%
  addProviderTiles('Esri.WorldImagery', group = 'Esri.WorldImagery')%>%
  setView(lng = 127.0, lat = 37.5, zoom = 10)%>%
  addRasterImage(crop_alt, colors = grid.pal, opacity = 0.8)%>%
addLegend(pal = grid.pal, values = values(crop_alt),title = "고도(m)")

더 읽어볼거리