Rで解析:「leaflet」パッケージなどで使える日本の地図ファイルの作成例

Rの解析に役に立つ記事
スポンサーリンク

「leaflet」パッケージなどで使える日本の地図ファイルの作成例の紹介です。元のシェープファイルはフリーで利用可能なNatural Earthを利用しています。プロット例は「leaflet」パッケージを利用しています。

・Natural Earth
 http://www.naturalearthdata.com/

・使用したシェープファイル
 http://www.naturalearthdata.com/downloads/10m-cultural-vectors/

上記リンクのAdmin 1 – States, Provincesから「Download states and provinces」をクリックしne_10m_admin_1_states_provinces.zipファイルを保存します。保存後、解凍してできるフォルダ内の「ne_10m_admin_1_states_provinces.shp」が目的のファイルです。なお、拡張子「shx」、「dbf」は必須ですので削除しないでください。

実行コマンドはwindows 11のR version 4.1.2で確認しています。

スポンサーリンク

日本の地図ファイル作成の実行コマンド例

詳細はコマンド、各パッケージのヘルプを確認してください。

#必要パッケージの読み込みとインストール
if(!require("rgdal", quietly = TRUE)){
  install.packages("rgdal");require("rgdal")
}
if(!require("stringi", quietly = TRUE)){
  install.packages("stringi");require("stringi")
}
library("tcltk")

#ダウンロードしたshpデータを読み込み
#読み込みに時間がかかります
JPNPref <- readOGR(paste0(as.character(tkgetOpenFile(title = "shp&#12501;&#12449;&#12452;&#12523;&#12434;&#36984;&#25246;",
                                                     filetypes = '{"shp&#12501;&#12449;&#12452;&#12523;" {".shp"}}',
                                                     initialfile = c("*.shp")))),
                   GDAL1_integer64_policy = TRUE, encoding = "utf-8")

#&#26085;&#26412;&#12398;&#12487;&#12540;&#12479;&#12434;&#25277;&#20986;
JPNPref <- subset(JPNPref, JPNPref$geonunit == "Japan")

#&#24565;&#12398;&#12383;&#12417;&#37117;&#36947;&#24220;&#30476;&#21517;&#12398;&#25991;&#23383;&#12467;&#12540;&#12489;&#12434;UTF-8&#12395;&#12377;&#12427;
JPNPref@data$name_local <- stri_encode(JPNPref@data$name_local, "utf-8")

#&#38745;&#23713;&#30476;&#12364;&#26410;&#20837;&#21147;&#12394;&#12398;&#12391;&#20445;&#31649;&#12377;&#12427;
JPNPref@data$name_local[31] <- "&#38745;&#23713;&#30476;"

#&#12501;&#12449;&#12452;&#12523;&#12434;&#20316;&#26989;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#12395;&#20445;&#23384;
save(JPNPref, file = "JPNPref.spd")

プロット例

詳細はコマンド、各パッケージのヘルプを確認してください。日本の地図ファイルの実行コマンド例で作成できる「JPNPref.spd」を読み込んでください。

#&#24517;&#35201;&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;&#35501;&#12415;&#36796;&#12415;&#12392;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
if(!require("leaflet", quietly = TRUE)){
  install.packages("leaflet");require("leaflet")
}
if(!require("htmltools", quietly = TRUE)){
  install.packages("htmltools");require("htmltools")
}
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
library("tcltk")

#&#12300;JPNPref.spd&#12301;&#12434;&#35501;&#12415;&#36796;&#12415;
load(paste0(as.character(tkgetOpenFile(title = "&#12501;&#12449;&#12452;&#12523;&#12434;&#36984;&#25246;",
                                       filetypes = '{"&#12501;&#12449;&#12452;&#12523;" {".*"}}',
                                       initialfile = c("*.*")))))

#&#22615;&#33394;&#12398;&#35373;&#23450;
pal <- colorFactor("viridis",
                   domain = JPNPref@data$name_local)

#&#12503;&#12525;&#12483;&#12488;
leaflet(JPNPref) %>%
  addTiles() %>%
  addPolygons(color = "red", weight = 1, smoothFactor = 1,
              fillColor = ~pal(JPNPref@data$name_local), fillOpacity = .5,
              highlightOptions = highlightOptions(color = "white",
                                                  weight = .5,
                                                  bringToFront = TRUE),
              popup = htmlEscape(JPNPref@data$name_local))

出力例

クリックすると都道府県名が表示されます。


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました