日本の地理空間情報を取得する方法をまとめました。R向けです。
1. Webサイトから手動でダウンロードする
国土数値情報ダウンロードサービス
e-stat 統計GIS
詳しいダウンロードの仕方はこちらの記事にあります↓
nigimitama.hatenablog.jp
Global Administrative Areas
全国市区町村界データ | ESRIジャパン
2. パッケージやAPIを使ってダウンロードする
{jpndistrict}:国土数値情報の2015年の行政区域データを簡単に取得する
国土数値情報の2015年の行政区域データを簡単に取得できるパッケージです。
主な関数は
jpn_pref(pref_code, admin_name, ...)
:都道府県データの抽出
- pref_code:都道府県コード
- admin_name:都道府県名
jpn_cities(jis_code, admin_name)
:市区町村データの抽出
- jis_code:都道府県コード or 市区町村コード
- admin_name:自治体名
library(tidyverse)
library(sf)
windowsFonts(Yu = windowsFont("Yu Gothic UI"))
g <- ggplot()+theme_set(theme_grey(base_size = 14, base_family = "Yu"))
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~
ggplot(jpn_pref(admin_name = "栃木県"), aes(fill = city))+
geom_sf()
{kokudosuuchi}:国土数値情報APIから簡単にDLする
{jpndistrict}よりも幅広い年度・区分から地理空間情報をダウンロードできます。
getKSJSummary()
:取得可能なデータの概要を表示
getKSJURL()
:データのURLとメタデータを取得する
getKSJData()
:データをダウンロードしてread_sf()で読み込む
translateKSJData()
:シェープファイルの変数名をわかりやすいものに変える
library(kokudosuuchi)
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
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>
url <- result %>% filter(year == "2017", areaCode == "13") %>% select("zipFileUrl") %>% as.character()
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 [ツー]>
tokyo2017_23 <- tokyo2017$`N03-17_13_170101` %>% filter(stringr::str_detect(`郡・政令都市名`,"区"))
ggplot(tokyo2017_23, aes(fill = `郡・政令都市名`))+
geom_sf()
{choroplethrAdmin1}:マクロな地理空間情報と国勢統計
日本の都道府県レベルの地理空間情報(やアメリカの州レベルのデータなど)と国勢調査(センサス)の人口統計が入っています。
{choroplethr}というパッケージから派生しているパッケージで,{choroplethr}はgeom_sf()のような感じの塗り分け統計地図(コロプレス図)の描画関数です。
一応載せましたが,今は初めからsf形式の地理空間情報を取得してgeom_sf()で描いてしまったほうが早いので,あまり{choroplethr}の出番はないかもしれません…
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
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}