leaflet에서 coast line 표시

5547 단어 Rgeojsonleaflet

소개



R의 leaflet에서 컬러맵 등을 표시했을 때, 육지와 바다의 경계선이 매우 보기 어려워졌다. 그래서 '해안선(coast line)'만 표시해 컬러맵과 함께 플롯하려 했다. 그 방법에 대해 여러가지 조사했으므로 비망록으로서 기사에 남겨 둔다.

GeoJSON 데이터 얻기



leaflet 안에 해안선만을 표시하는 기능을 찾을 수 없었다. 한편, GeoJSON 형식으로 해안선 데이터를 배포해 주는 곳( htps : // 기주 b. 이 m / n v 케 l )이 있었으므로, 그것을 사용하는 것으로 한다.

여기에서는 1:10m, 1:50m, 1:110m의 분해능으로 데이터가 제공되고 있다. github에서 geojson 폴더에서 ne_10m_coastline.geojson, ne_50m_coastline.geojson, ne_110m_coastline.geojson 중 하나를 다운로드하여 사용합니다.

GeoJSON 데이터를 leaflet에 표시



geojson 을 읽어들여 스타일 (선의 색, 채우기의 유무 등)을 변경해, addGeoJSON 로 leaflet 상에 표시한다. 다음은 코드입니다.
#必要なパッケージの読み込み
library(dplyr)
library(leaflet)
library(jsonlite)
library(mapview)

#GeoJSONファイルの読み込み
#geojson <- read_json("./natural-earth-vector/geojson/ne_10m_coastline.geojson")
#geojson <- read_json("./natural-earth-vector/geojson/ne_50m_coastline.geojson")
geojson <- read_json("./natural-earth-vector/geojson/ne_110m_coastline.geojson")

#スタイルの変更
geojson$style = list(
  color = "#000", #線の色
 weight = 1, #線の太さ
  fill = FALSE #塗りつぶしの有無
)

#leaflet で表示
map <- leaflet() %>% addTiles() %>% addGeoJSON(geojson)
print(map)

#png に保存
mapview::mapshot(map, file = "./coast_line.png")



해안선이 표시되는 것을 알 수 있다.

분해능의 차이(10m, 50m, 110m)



지도를 확대해 보면 세세한 부분의 차이가 보인다. 이해하기 쉽기 때문에 선을 굵게하고, 이시카와 현 주변 ( setView(lng = 136.4, lat = 36.3, zoom = 8) 추가)에서 보면,

110m : 노토 반도가 직선으로 표시되어 있으며, 형태는 전혀 모른다.


50m : 노토 반도의 개략을 알 정도


10m:세세한 만항까지 형태를 알 수 있다


된다. 물론 세세한 것이 데이터도 무겁기 때문에 표시에 상당히 시간이 걸린다 (자신의 노트북에서 10m의 표시에 몇 분 걸렸다) 때문에 용도에 따라 선택하는 것이 필요하다.

결론



GeoJSON 형식의 파일이라면 같은 방법으로 leaflet에 겹쳐 갈 수 있다고 생각되므로, 다른 GeoJSON 데이터에서도 여러가지 시험해보고 싶다. 또, 이번은 오픈 소스가 되어 있는 GeoJSON 데이터를 이용해, cosat line 의 표시를 실시했습니다만, 만약 leaflet 의 패키지로 간단하게 실시할 수 있는 방법을 아는 분이 있으면 꼭 코멘트해 주세요!

좋은 웹페이지 즐겨찾기