RMarkdown에서 Leaflet을 사용한지도 그리기 및 배포

R 언어의 R Markdown에서 Leaflet을 사용한 지도 그리기를 하고, 출력된 Html 파일을 사람에게 배포하고 싶을 때, 라는 터무니 없이 틈새시에 도움이 되는 Tips입니다.

지도를 그릴 수 없을 때의 대처법



빨리 가자.
Leaflet은 지도를 쉽게 그릴 수 있는 라이브러리입니다. 자세한 사용법은 하부의 참고 링크의 해설이 매우 알기 쉽습니다.

아래와 같이 간단하게 쓰면, R Studio상에서 실행했을 경우는 맵이 묘화 됩니다만, 출력된 html 파일을 브라우저로 열면 맵이 묘화되지 않는다고 하는 현상이 둡니다.

간단한 구현
library(magrittr)
library(leaflet)

# data.leaflet がデータの入ったデータフレームとします
# 列としてlongitude, latitude, name, radius があるというようなイメージでご覧ください

# width, heightで出力される地図部分の大きさを調整できます
m <- leaflet(data.leaflet, width = 900, height = 700)

m %>% 
  addTiles() %>%
  addMarkers(lng=~longitude, lat=~latitude, popup=~name, group = "マーカー") %>%
  addCircleMarkers(lng=~longitude,lat=~latitude,radius=~radius, color = "#0f3") %>% 
  addPolylines(lng=~longitude,lat=~latitude,color="#03f",weight="5") %>%
  addLayersControl(overlayGroups=c("マーカー")) %>%
  setView(lng=139.7,lat=35.7,zoom=11)



이런 식으로 지도만 표시되지 않는다.

그건 그렇고, addMarkers는 마커 그리기, addCircleMarkers는 원 그리기, addPolylines는 점을 연결하는 선 그리기, addLayersControl은 레이어 설정입니다. 위와 같이 마커의 표시 숨기기가 전환되는 상태가 됩니다.
우선 이것만 있으면 그것 같은 지도 그리기를 할 수 있어 훌륭합니다.

회피 방법



본제입니다.
결론으로서 addTitles() 의 인수에 이하를 설정합니다.

url 설정
m %>% 
  addTiles(urlTemplate = "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") %>%
  

원인



원래 Leaflet에서는 OpenStreetMap을 이용하고 있어 거기에 액세스하고 있는 것입니다만, 라이브러리내에서 액세스처로서 //{s}.tile.openstreetmap.org/{z}/{x}/{y}.png 라고 하는 지정이 되어 있습니다.
http의 부분을 생략하고 있습니다만, 이것은 http/https 양쪽 모두에 대응할 수 있기 (위해)때문에, 실수는 아닙니다. (최근에는 Google에서는 비추천이라고 하는 것 같다.)

따라서 html을 로컬로 열면 file://{s}.tile.openstreetmap.ort/...에 액세스하려고 시도하고 표시되지 않기 때문입니다.

덤 Tips



R Markdown을 실행할 때 매개변수를 전달하여 실행할 수 있습니다.
R Markdown 설정에서 다음과 같이 파라미터를 정의할 수 있습니다.


Knit 실행할 때 Knit with Parameters를 지정하면 입력 양식이 나타나서 설정할 수 있습니다.
리포트 작성시에 매우 편리하네요.




참고 링크



Leaflet for R
leaflet으로 시작하는 R에 의한 지도 플롯
참고issues

좋은 웹페이지 즐겨찾기