install.packages("tidyverse", repos="http://cran.rstudio.com/")
install.packages("sf", repos="http://cran.rstudio.com/")
library(tidyverse)
library(sf)
日本地図(県境あり)を描く最もシンプルで効率的な方法はnaturalearthのデータを使ったやり方。国土地理院のウェブサイトからAdmin 1 states and provincesのセクションで必要な.zipデータがダウンロードできる。解凍して、R fileと同じフォルダにおいておく。
https://www.naturalearthdata.com/downloads/10m-cultural-vectors/
states01 <- sf::read_sf(".//ne_10m_admin_1_states_provinces")
states01 #データを確認
## Simple feature collection with 4596 features and 121 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -180 ymin: -90 xmax: 180 ymax: 83.6341
## Geodetic CRS: WGS 84
## # A tibble: 4,596 × 122
## featurecla scalerank adm1_code diss_me iso_3166_2 wikipedia iso_a2 adm0_sr
## <chr> <int> <chr> <int> <chr> <chr> <chr> <int>
## 1 Admin-1 stat… 3 ARG-1309 1309 AR-E <NA> AR 1
## 2 Admin-1 stat… 6 URY-8 8 UY-PA <NA> UY 1
## 3 Admin-1 stat… 2 IDN-1185 1185 ID-KI <NA> ID 5
## 4 Admin-1 stat… 6 MYS-1186 1186 MY-12 <NA> MY 5
## 5 Admin-1 stat… 3 CHL-2694 2694 CL-AP <NA> CL 1
## 6 Admin-1 stat… 4 BOL-1936 1936 BO-L <NA> BO 1
## 7 Admin-1 stat… 4 BOL-1937 1937 BO-O <NA> BO 1
## 8 Admin-1 stat… 3 CHL-2693 2693 CL-TA <NA> CL 1
## 9 Admin-1 stat… 4 BOL-1939 1939 BO-P <NA> BO 1
## 10 Admin-1 stat… 3 CHL-2695 2695 CL-AN <NA> CL 1
## # ℹ 4,586 more rows
## # ℹ 114 more variables: name <chr>, name_alt <chr>, name_local <chr>,
## # type <chr>, type_en <chr>, code_local <chr>, code_hasc <chr>, note <chr>,
## # hasc_maybe <chr>, region <chr>, region_cod <chr>, provnum_ne <int>,
## # gadm_level <int>, check_me <int>, datarank <int>, abbrev <chr>,
## # postal <chr>, area_sqkm <int>, sameascity <int>, labelrank <int>,
## # name_len <int>, mapcolor9 <int>, mapcolor13 <int>, fips <chr>, …
japan01 <- states01 %>%
dplyr::filter(adm0_a3 == 'JPN') #日本地図に必要なデータをjapan01に格納
japan01 #データを確認
## Simple feature collection with 47 features and 121 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 122.9382 ymin: 24.2121 xmax: 153.9856 ymax: 45.52041
## Geodetic CRS: WGS 84
## # A tibble: 47 × 122
## featurecla scalerank adm1_code diss_me iso_3166_2 wikipedia iso_a2 adm0_sr
## * <chr> <int> <chr> <int> <chr> <chr> <chr> <int>
## 1 Admin-1 stat… 2 JPN-3501 3501 JP-46 <NA> JP 5
## 2 Admin-1 stat… 6 JPN-1835 1835 JP-44 <NA> JP 1
## 3 Admin-1 stat… 6 JPN-1829 1829 JP-40 <NA> JP 1
## 4 Admin-1 stat… 6 JPN-1827 1827 JP-41 <NA> JP 1
## 5 Admin-1 stat… 2 JPN-3500 3500 JP-42 <NA> JP 3
## 6 Admin-1 stat… 6 JPN-1830 1830 JP-43 <NA> JP 1
## 7 Admin-1 stat… 6 JPN-1831 1831 JP-45 <NA> JP 1
## 8 Admin-1 stat… 6 JPN-1836 1836 JP-36 <NA> JP 1
## 9 Admin-1 stat… 6 JPN-1833 1833 JP-37 <NA> JP 1
## 10 Admin-1 stat… 6 JPN-1832 1832 JP-38 <NA> JP 4
## # ℹ 37 more rows
## # ℹ 114 more variables: name <chr>, name_alt <chr>, name_local <chr>,
## # type <chr>, type_en <chr>, code_local <chr>, code_hasc <chr>, note <chr>,
## # hasc_maybe <chr>, region <chr>, region_cod <chr>, provnum_ne <int>,
## # gadm_level <int>, check_me <int>, datarank <int>, abbrev <chr>,
## # postal <chr>, area_sqkm <int>, sameascity <int>, labelrank <int>,
## # name_len <int>, mapcolor9 <int>, mapcolor13 <int>, fips <chr>, …
#ggplotとgeom_sfで描画
japanmap <- ggplot(data=japan01)+geom_sf()+theme_void()+ theme_void()
japanmap
九州の地図は、国土交通省・国土数値情報ダウンロードサイト(ここ、新規タブで開く)のデータを使って描画するのが良い。「九州」のファイル(GML)をダウンロード。解凍したフォルダ(GML)を、Rファイルと同じフォルダに入れておく。
#ggplotとgeom_sfで九州地図を描画
kyushumap <- ggplot(data =kyushu)+geom_sf()+theme_void()
kyushumap
ここでは、九州地図に椎葉村と鹿児島県いちき串木野市の位置をポイントで表示してみる。位置情報(緯度・経度)をここで取得。
#椎葉と串木野ポイント指定した地図
shiibakushikinomap <- ggplot(data =kyushu)+geom_sf()+
geom_sf(data = shiiba, color = "black", size = 3)+
geom_sf(data = kushikino, color = "black", size = 3)+ theme_void() #ポイントの色と大きさはcolorとsizeで調整。
shiibakushikinomap
琉球列島の場合、鹿児島県のうち大島郡のみ(喜界島から与論まで)の地図情報と沖縄県の地図情報を合算させる必要がある。一番シンプルなやり方を以下で紹介する。
九州の場合と同様、国土交通省・国土数値情報ダウンロードサイト(ここ、新規タブで開く)のデータを使って描画する。「鹿児島県」「沖縄県」のファイル(GML)をダウンロード。解凍したフォルダ(GML)を、Rファイルと同じフォルダに入れておく。
まず鹿児島県のデータを加工して奄美データを抜き取る。
#まず鹿児島の地図情報を読み込む
kagoshima <- st_read("N03-20210101_46_GML")
## Reading layer `N03-21_46_210101' from data source
## `/Users/michinorishimoji2023/Documents/4_stats/Geo/N03-20210101_46_GML'
## using driver `ESRI Shapefile'
## Simple feature collection with 8136 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 128.3954 ymin: 27.01868 xmax: 131.2054 ymax: 32.3106
## Geodetic CRS: JGD2011
str(kagoshima)
## Classes 'sf' and 'data.frame': 8136 obs. of 6 variables:
## $ N03_001 : chr "鹿児島県" "鹿児島県" "鹿児島県" "鹿児島県" ...
## $ N03_002 : chr NA NA NA NA ...
## $ N03_003 : chr NA NA NA NA ...
## $ N03_004 : chr "鹿児島市" "鹿児島市" "鹿児島市" "鹿児島市" ...
## $ N03_007 : chr "46201" "46201" "46201" "46201" ...
## $ geometry:sfc_POLYGON of length 8136; first list element: List of 1
## ..$ : num [1:7, 1:2] 131 131 131 131 131 ...
## ..- attr(*, "class")= chr [1:3] "XY" "POLYGON" "sfg"
## - attr(*, "sf_column")= chr "geometry"
## - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA
## ..- attr(*, "names")= chr [1:5] "N03_001" "N03_002" "N03_003" "N03_004" ...
#そのうち奄美市、大島郡のデータだけを抜き取る
amami <- kagoshima[kagoshima$N03_007%in%c("46523", "46524", "46525", "46222", "46527", "46222", "46529", "46530", "46531", "46532", "46533", "46534", "46535"), ]
#このデータで奄美列島のみの地図を描画できる
amamimap <- ggplot(data =amami)+geom_sf()+ theme_void()
amamimap
#奄美データの地図と沖縄県データの地図を重ねてryukyumapとして描画
ryukyumap <- ggplot(data =amami)+geom_sf()+ geom_sf(data=okinawa)+theme_void()
ryukyumap
#宮古諸島の地図を描画
miyakomap <- ggplot(data =miyako)+geom_sf()+theme_void()
miyakomap