Movatterモバイル変換


[0]ホーム

URL:


見出し画像

研究用に(あるいは他の用途でも)地図を描画する際、著作権の問題や、正確性の問題を考慮する必要がある。以下では、国土交通省・国土数値情報を用いて、自力で描画できるようにする方法を紹介する。なお、R言語を想定しているが、Pythonでも(ほぼ)同様にできる。



Required packages

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


日本列島

ケーススタディ1 九州全体の地図

九州の地図は、国土交通省・国土数値情報ダウンロードサイト(ここ、新規タブで開く)のデータを使って描画するのが良い。「九州」のファイル(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


九州の特定地域のポイント指定

ケーススタディ2 琉球列島の地図

琉球列島の場合、鹿児島県のうち大島郡のみ(喜界島から与論まで)の地図情報と沖縄県の地図情報を合算させる必要がある。一番シンプルなやり方を以下で紹介する。

九州の場合と同様、国土交通省・国土数値情報ダウンロードサイト(ここ、新規タブで開く)のデータを使って描画する。「鹿児島県」「沖縄県」のファイル(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. of6 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 length8136; first list element: List of1##   ..$ : num [1:7,1:2]131131131131131 ...##   ..- 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


宮古群島


いいなと思ったら応援しよう!

1976年生まれ。言語学者。九州大学言語学講座教授。フィールドワークに基づく言語記述を行う。沖縄県宮古島,宮崎県椎葉村を主なフィールドにしている。

[8]ページ先頭

©2009-2025 Movatter.jp