日本の地理空間情報を取得する方法をまとめました。R向けです。
1. Webサイトから手動でダウンロードする
国土数値情報ダウンロードサービス
- http://nlftp.mlit.go.jp/ksj/index.html
- 日本の細かな地理空間情報を取得するならここが一番です。
- 「行政区域」「中学校区」「浸水想定区域」など様々な区分で整理された日本の地理空間情報がまとめられており,ダウンロードできます。
- 過去の行政区域情報もダウンロードできます。
e-stat 統計GIS
- https://www.e-stat.go.jp/
- 日本の行政区域やメッシュのデータを入手できます
- 地理空間情報とともに人口などの統計データも入っていて便利です
詳しいダウンロードの仕方はこちらの記事にあります↓
Global Administrative Areas
- http://www.gadm.org/country
- 各国のシェープファイル(やR用のrdsファイル)をダウンロードできるサイトです
- 地域区分の細かさが異なる3種のデータが用意されています
- JPN_0:日本全図
- JPN_1:都道府県レベル
- JPN_2:市区町村レベル
全国市区町村界データ | ESRIジャパン
- https://www.esrij.com/products/japan-shp/
- 日本の地理空間情報と人口・世帯数データがダウンロードできます
2. パッケージやAPIを使ってダウンロードする
{jpndistrict}:国土数値情報の2015年の行政区域データを簡単に取得する
国土数値情報の2015年の行政区域データを簡単に取得できるパッケージです。
主な関数は
jpn_pref(pref_code, admin_name, ...)
:都道府県データの抽出jpn_cities(jis_code, admin_name)
:市区町村データの抽出
# load libraries library(tidyverse) library(sf) # ggplot setting windowsFonts(Yu = windowsFont("Yu Gothic UI")) g <- ggplot()+theme_set(theme_grey(base_size = 14, base_family = "Yu"))
# {jpndistrict} -------------------------------- # install.packages("jpndistrict") library(jpndistrict) # 都道府県データの読み込み jpn_pref(pref_code = 11) %>% head()
## Simple feature collection with 6 features and 4 fields ## geometry type: POLYGON ## dimension: XY ## bbox: xmin: 139.5405 ymin: 35.8319 xmax: 139.7011 ymax: 35.96612 ## epsg (SRID): 4326 ## proj4string: +proj=longlat +datum=WGS84 +no_defs ## # A tibble: 6 x 5 ## pref_code prefecture city_code city geometry ## <chr> <chr> <chr> <chr> <POLYGON [ツー]> ## 1 11 埼玉県 11101 さいたま市 ~ ((139.5477 35.93408, 139.5443 35~ ## 2 11 埼玉県 11102 さいたま市 ~ ((139.6176 35.96495, 139.627 35.~ ## 3 11 埼玉県 11103 さいたま市 ~ ((139.6378 35.92285, 139.6428 35~ ## 4 11 埼玉県 11104 さいたま市 ~ ((139.6672 35.96454, 139.6733 35~ ## 5 11 埼玉県 11105 さいたま市 ~ ((139.6211 35.87062, 139.6213 35~ ## 6 11 埼玉県 11106 さいたま市 ~ ((139.6049 35.88834, 139.6106 35~
# 市区町村データの読み込み jpn_cities(jis_code = c(33103, 33104, 33205)) %>% head()
## Simple feature collection with 3 features and 2 fields ## geometry type: MULTIPOLYGON ## dimension: XY ## bbox: xmin: 133.4448 ymin: 34.29839 xmax: 134.1228 ymax: 34.78309 ## epsg (SRID): 4326 ## proj4string: +proj=longlat +datum=WGS84 +no_defs ## # A tibble: 3 x 3 ## city_code city geometry ## <chr> <chr> <MULTIPOLYGON [ツー]> ## 1 33103 岡山市 東区~ (((133.9958 34.61302, 133.9902 34.61591, 133.9857 3~ ## 2 33104 岡山市 南区~ (((133.9109 34.64389, 133.9131 34.64387, 133.9131 3~ ## 3 33205 笠岡市 (((133.5929 34.37393, 133.5942 34.37341, 133.5935 3~
# plot ggplot(jpn_pref(admin_name = "栃木県"), aes(fill = city))+ geom_sf()
{kokudosuuchi}:国土数値情報APIから簡単にDLする
{jpndistrict}よりも幅広い年度・区分から地理空間情報をダウンロードできます。
getKSJSummary()
:取得可能なデータの概要を表示getKSJURL()
:データのURLとメタデータを取得するgetKSJData()
:データをダウンロードしてread_sf()で読み込むtranslateKSJData()
:シェープファイルの変数名をわかりやすいものに変える
# {kokudosuuchi} ------------------------------ # install.packages("kokudosuuchi") library(kokudosuuchi) # getKSJSummary():取得可能なデータの概要を表示 getKSJSummary()
## # A tibble: 108 x 5 ## identifier title field1 field2 areaType ## <chr> <chr> <chr> <chr> <chr> ## 1 A03 三大都市圏計画区域 政策区域 大都市圏 2 ## 2 A09 都市地域 国土(水・土地) 土地利用 3 ## 3 A10 自然公園地域 地域 保護保全 3 ## 4 A11 自然保全地域 地域 保護保全 3 ## 5 A12 農業地域 国土(水・土地) 土地利用 3 ## 6 A13 森林地域 国土(水・土地) 土地利用 3 ## 7 A15 鳥獣保護区 地域 保護保全 3 ## 8 A16 人口集中地区 政策区域 - 3 ## 9 A17 過疎地域 政策区域 条件不利地域 3 ## 10 A18 半島振興対策実施地域 政策区域 条件不利地域 3 ## # ... with 98 more rows
# getKSJURL():データのURLとメタデータを取得する result <- getKSJURL(identifier = "N03") head(result)
## # A tibble: 6 x 9 ## identifier title field year areaType areaCode datum zipFileUrl ## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> ## 1 N03 行政区域~ 政策区域~ 2017 3 1 1 http://nl~ ## 2 N03 行政区域~ 政策区域~ 2017 3 2 1 http://nl~ ## 3 N03 行政区域~ 政策区域~ 2017 3 3 1 http://nl~ ## 4 N03 行政区域~ 政策区域~ 2017 3 4 1 http://nl~ ## 5 N03 行政区域~ 政策区域~ 2017 3 5 1 http://nl~ ## 6 N03 行政区域~ 政策区域~ 2017 3 6 1 http://nl~ ## # ... with 1 more variable: zipFileSize <chr>
# getKSJData():データをダウンロードしてread_sf()で読み込む ## 2017年,東京の行政区域データのURL url <- result %>% filter(year == "2017", areaCode == "13") %>% select("zipFileUrl") %>% as.character() ## ZIPファイルをダウンロードしてread_sf()で読み込んでくれる tokyo2017 <- getKSJData(url) head(tokyo2017)
## $`N03-17_13_170101` ## Simple feature collection with 6210 features and 5 fields ## geometry type: POLYGON ## dimension: XY ## bbox: xmin: 136.0695 ymin: 20.42275 xmax: 153.9868 ymax: 35.89842 ## epsg (SRID): NA ## proj4string: +proj=longlat +ellps=GRS80 +no_defs ## # A tibble: 6,210 x 6 ## N03_001 N03_002 N03_003 N03_004 N03_007 geometry ## <chr> <chr> <chr> <chr> <chr> <POLYGON [ツー]> ## 1 東京都 <NA> 千代田区 <NA> 13101 ((139.7729 35.7037, 139.7728 ~ ## 2 東京都 <NA> 中央区 <NA> 13102 ((139.7834 35.69645, 139.7846~ ## 3 東京都 <NA> 港区 <NA> 13103 ((139.7713 35.62841, 139.7713~ ## 4 東京都 <NA> 港区 <NA> 13103 ((139.7669 35.62774, 139.7672~ ## 5 東京都 <NA> 港区 <NA> 13103 ((139.7702 35.63199, 139.7705~ ## 6 東京都 <NA> 港区 <NA> 13103 ((139.758 35.6338, 139.758 35~ ## 7 東京都 <NA> 港区 <NA> 13103 ((139.7585 35.6338, 139.7585 ~ ## 8 東京都 <NA> 港区 <NA> 13103 ((139.7667 35.63298, 139.7665~ ## 9 東京都 <NA> 港区 <NA> 13103 ((139.7766 35.63611, 139.7766~ ## 10 東京都 <NA> 港区 <NA> 13103 ((139.7562 35.63689, 139.7562~ ## # ... with 6,200 more rows
# 列名を意味に即した日本語名にしてくれる tokyo2017 <- translateKSJData(tokyo2017) head(tokyo2017)
## $`N03-17_13_170101` ## Simple feature collection with 6210 features and 5 fields ## geometry type: POLYGON ## dimension: XY ## bbox: xmin: 136.0695 ymin: 20.42275 xmax: 153.9868 ymax: 35.89842 ## epsg (SRID): NA ## proj4string: +proj=longlat +ellps=GRS80 +no_defs ## # A tibble: 6,210 x 6 ## 都道府県名 `支庁・振興局名` `郡・政令都市名` 市区町村名 行政区域コード ## <chr> <chr> <chr> <chr> <chr> ## 1 東京都 <NA> 千代田区 <NA> 13101 ## 2 東京都 <NA> 中央区 <NA> 13102 ## 3 東京都 <NA> 港区 <NA> 13103 ## 4 東京都 <NA> 港区 <NA> 13103 ## 5 東京都 <NA> 港区 <NA> 13103 ## 6 東京都 <NA> 港区 <NA> 13103 ## 7 東京都 <NA> 港区 <NA> 13103 ## 8 東京都 <NA> 港区 <NA> 13103 ## 9 東京都 <NA> 港区 <NA> 13103 ## 10 東京都 <NA> 港区 <NA> 13103 ## # ... with 6,200 more rows, and 1 more variable: geometry <POLYGON [ツー]>
# plot ## 23区 tokyo2017_23 <- tokyo2017$`N03-17_13_170101` %>% filter(stringr::str_detect(`郡・政令都市名`,"区")) ## geom_sf()でplot ggplot(tokyo2017_23, aes(fill = `郡・政令都市名`))+ geom_sf()
{choroplethrAdmin1}:マクロな地理空間情報と国勢統計
日本の都道府県レベルの地理空間情報(やアメリカの州レベルのデータなど)と国勢調査(センサス)の人口統計が入っています。
{choroplethr}というパッケージから派生しているパッケージで,{choroplethr}はgeom_sf()のような感じの塗り分け統計地図(コロプレス図)の描画関数です。
一応載せましたが,今は初めからsf形式の地理空間情報を取得してgeom_sf()で描いてしまったほうが早いので,あまり{choroplethr}の出番はないかもしれません…
# install.packages(c("choroplethr","choroplethrAdmin1")) library(choroplethr) library(choroplethrAdmin1) # 国勢調査データ data(df_japan_census) head(df_japan_census)
## region pop_2010 percent_pop_change_2005_2010 pop_density_km2_2010 ## 23 aichi 7411000 2.2 1434.8 ## 5 akita 1086000 -5.2 93.3 ## 2 aomori 1373000 -4.4 142.4 ## 12 chiba 6216000 2.6 1205.5 ## 38 ehime 1431000 -2.5 252.1 ## 18 fukui 806000 -1.9 192.4
# df_japan_censusデータ PlotData <- data.frame(region = df_japan_census[, 1], value = df_japan_census[, 2]) #プロット admin1_choropleth(country.name = "japan", df = PlotData, title = "2010 Japan Population Estimates", legend = "Population", num_colors = 3)
まとめ
- 国土数値情報が一番充実している
- 手っ取り早く現行の行政区域データが欲しい場合は{jpndistrict}
- 過去の行政区域だったり,行政区域以外のデータなどもう少し細かいデータが欲しいときは{kokudosuuchi}