leaflet에서 coast line 표시
소개
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 의 패키지로 간단하게 실시할 수 있는 방법을 아는 분이 있으면 꼭 코멘트해 주세요!
Reference
이 문제에 관하여(leaflet에서 coast line 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryamamoto0406/items/360ef94a5b34be4df04f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 의 패키지로 간단하게 실시할 수 있는 방법을 아는 분이 있으면 꼭 코멘트해 주세요!
Reference
이 문제에 관하여(leaflet에서 coast line 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryamamoto0406/items/360ef94a5b34be4df04f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#必要なパッケージの読み込み
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")
지도를 확대해 보면 세세한 부분의 차이가 보인다. 이해하기 쉽기 때문에 선을 굵게하고, 이시카와 현 주변 (
setView(lng = 136.4, lat = 36.3, zoom = 8)
추가)에서 보면,110m : 노토 반도가 직선으로 표시되어 있으며, 형태는 전혀 모른다.
50m : 노토 반도의 개략을 알 정도
10m:세세한 만항까지 형태를 알 수 있다
된다. 물론 세세한 것이 데이터도 무겁기 때문에 표시에 상당히 시간이 걸린다 (자신의 노트북에서 10m의 표시에 몇 분 걸렸다) 때문에 용도에 따라 선택하는 것이 필요하다.
결론
GeoJSON 형식의 파일이라면 같은 방법으로 leaflet에 겹쳐 갈 수 있다고 생각되므로, 다른 GeoJSON 데이터에서도 여러가지 시험해보고 싶다. 또, 이번은 오픈 소스가 되어 있는 GeoJSON 데이터를 이용해, cosat line 의 표시를 실시했습니다만, 만약 leaflet 의 패키지로 간단하게 실시할 수 있는 방법을 아는 분이 있으면 꼭 코멘트해 주세요!
Reference
이 문제에 관하여(leaflet에서 coast line 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryamamoto0406/items/360ef94a5b34be4df04f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(leaflet에서 coast line 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryamamoto0406/items/360ef94a5b34be4df04f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)