leaflet で coast line の表示
はじめに
R の leaflet でカラーマップなどを表示した際に、陸地と海の境界線が非常に見難くなった。そこで「海岸線(coast line)」のみを表示しカラーマップと一緒にプロットしようと考えた。その方法についていろいろと調べたので備忘録として記事に残しておく。
GeoJSON データの入手
leaflet の中に海岸線のみを表示するような機能を見つけられなかった。一方で、GeoJSON形式で海岸線データを配布してくれているところ(https://github.com/nvkelso/natural-earth-vector)があったので、それを使用することとする。
ここでは、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:能登半島が直線で表されていて、形は全く分からない。
となる。もちろん細かい方がデータも重いので表示にかなり時間がかかる(自身のノートPCで10mの表示に数分かかった)ので、用途に応じて選択することが必要となる。
おわりに
GeoJSON 形式のファイルなら同様の方法で leaflet に重ねていくことができると思われるので、他の GeoJSON データでもいろいろと試してみたい。また、今回はオープンソースになっている GeoJSON データを用いて、cosat line の表示を行ったが、もし leaflet のパッケージで簡単に行える方法をご存じの方がいれば是非コメント下さい!
Author And Source
この問題について(leaflet で coast line の表示), 我々は、より多くの情報をここで見つけました https://qiita.com/ryamamoto0406/items/360ef94a5b34be4df04f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .