最終更新:2026-01-02
Rで利用しやすい行政境界データとしては、主に以下が挙げられる。
N03-20250101_GML.ziph27ka03.shp: 市区町村境界データ# 必要なパッケージの読み込み
library(sf)
# シェープファイルの読み込み
kokusei03 <- sf::st_read("A002005212015XYSWC03/h27ka03.shp")## Reading layer `h27ka03' from data source
## `/Users/ayumu/Documents/GitHub/research/4_GIS/MapJapan/A002005212015XYSWC03/h27ka03.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 3923 features and 35 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -15521.08 ymin: -138964.2 xmax: 106505.8 ymax: 50361.21
## Projected CRS: JGD2000 / Japan Plane Rectangular CS X
## Coordinate Reference System:
## User input: JGD2000 / Japan Plane Rectangular CS X
## wkt:
## PROJCRS["JGD2000 / Japan Plane Rectangular CS X",
## BASEGEOGCRS["JGD2000",
## DATUM["Japanese Geodetic Datum 2000",
## ELLIPSOID["GRS 1980",6378137,298.257222101,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## ID["EPSG",4612]],
## CONVERSION["Japan Plane Rectangular CS zone X",
## METHOD["Transverse Mercator",
## ID["EPSG",9807]],
## PARAMETER["Latitude of natural origin",40,
## ANGLEUNIT["degree",0.0174532925199433],
## ID["EPSG",8801]],
## PARAMETER["Longitude of natural origin",140.833333333333,
## ANGLEUNIT["degree",0.0174532925199433],
## ID["EPSG",8802]],
## PARAMETER["Scale factor at natural origin",0.9999,
## SCALEUNIT["unity",1],
## ID["EPSG",8805]],
## PARAMETER["False easting",0,
## LENGTHUNIT["metre",1],
## ID["EPSG",8806]],
## PARAMETER["False northing",0,
## LENGTHUNIT["metre",1],
## ID["EPSG",8807]]],
## CS[Cartesian,2],
## AXIS["northing (X)",north,
## ORDER[1],
## LENGTHUNIT["metre",1]],
## AXIS["easting (Y)",east,
## ORDER[2],
## LENGTHUNIT["metre",1]],
## USAGE[
## SCOPE["Cadastre, engineering survey, topographic mapping (large and medium scale)."],
## AREA["Japan - onshore - Honshu north of 38°N approximately - Aomori-ken; Akita-ken; Yamagata-ken; Iwate-ken; Miyagi-ken."],
## BBOX[37.73,139.49,41.58,142.14]],
## ID["EPSG",2452]]
KEY_CODEを使えば、他の年次の国勢調査や経済センサスなどの統計データと接続できる。
| No. | フィールド名 | 説明 | 備考 |
|---|---|---|---|
| 1 | KEY_CODE | 図形と集計データのリンクコード | KEN+KEYCODE2 |
| 2 | PREF | 都道府県番号 | |
| 3 | CITY | 市区町村番号 | |
| 4 | S_AREA | 町字コード+丁目、字などの番号 | KIHON1+KIHON2 |
| 5 | PREF_NAME | 都道府県名 | |
| 6 | CITY_NAME | 区町村名 | 1)CSS_NAME(ない場合はGST_NAME) |
| 7 | S_NAME | 町丁・字等名称 | |
| 8 | KIGO_E | 特殊記号E(町丁・字等重複フラグ) | |
| 9 | HCODE | 分類コード | |
| 10 | AREA | 面積(㎡) | |
| 11 | PERIMETER | 周辺長(m) | |
| 12 | H27KAxx_ | 内部ID | |
| 13 | H27KAxx_ID | 外部ID | |
| 14 | KEN | 都道府県番号 | 町丁・字等番号 |
| 15 | KEN_NAME | 都道府県名 | |
| 16 | SITYO_NAME | 支庁・振興局名 | |
| 17 | GST_NAME | 郡市・特別区・政令指定都市名 | |
| 18 | CSS_NAME | 区町村名 | |
| 19 | KIHON1 | 町字コード | |
| 20 | DUMMY1 | ダミー(“-”) | |
| 21 | KIHON2 | 丁目、字などの番号 | |
| 22 | KEYCODE1 | マッチング番号 | CITY+KIHON1+KIHON2 |
| 23 | KEYCODE2 | 町丁・字等別結果マッチング番号 | |
| 24 | AREA_MAX_F | 面積最大フラグ | |
| 25 | KIGO_D | 特殊記号D(飛び地、抜け地フラグ) | ) |
| 26 | N_KEN | 抜け地県番号 | |
| 27 | N_CITY | 抜け地市区町村番号 | |
| 28 | KIGO_I | 特殊記号I(島フラグ) | |
| 29 | MOJI | 町丁・字等名称 | |
| 30 | KBSUM | 基本単位区(調査区)数 | |
| 31 | JINKO | 人口 | KIGO_Eが付与されている場合は、E1に代表してセットし、En(n≧2)は0(ゼロ) |
| 32 | SETAI | 世帯数 | KIGO_Eが付与されている場合は、E1に代表してセットし、En(n≧2)は0(ゼロ) |
| 33 | X_CODE | 図形中心点X座標(10進経度) | |
| 34 | Y_CODE | 図形中心点Y座標(10進緯度) | |
| 35 | KCODE1 | 町丁・字等番号 | KIHON1+DUMMY1+KIHON2 |
ggplot2# CITYごとにAREAが最大の地物を特定
library(dplyr)
kokusei03 <- kokusei03 %>%
group_by(PREF, CITY) %>%
mutate(CityMax = max(AREA)) %>%
ungroup() %>%
mutate(CityMaxD = ifelse(AREA == CityMax, 1, 0))
# 新しくCITY_LABELという変数=CITY_NAMEを作成。
# CITYの中で面積が最大の地物にのみこのCITY_NAMEを表示
kokusei03$CITY_LABEL <- ifelse(kokusei03$CityMaxD == 1,
kokusei03$CITY_NAME, "")# 地図の作成
library(ggplot2)
ggplot(data = kokusei03) + # 地図データの指定
geom_sf(fill = "lightyellow", color = "lightgrey") + # 塗り
theme_minimal() + # ミニマルテーマの適用
labs(title = "Population Census of Japan",
subtitle = "Administrative Boundaries of Japan Cities",
caption = "Source: Statistics Bureau, Ministry of Internal Affairs and Communications") +
theme(axis.text = element_blank(), # 目盛りを非表示
axis.title = element_blank()) + # 軸タイトルを非表示
geom_sf_text(aes(label = CITY_LABEL), size = 2, family = "Osaka") # City_NAMEを表示TRUE
scale_fill_viridis_c(option = "plasma")を使って、人口を色で表現するコロプレスマップを作成する。
optionには、 "plasma"、
"magma", "inferno",
"cividis"などが利用できる。scale_fill_viridis_c(option = "plasma")以外にも、scale_fill_viridis_b(),
scale_fill_viridis_d()などが利用できる。
scale_fill_viridis_b()は、離散値に対して利用できる。scale_fill_viridis_d()は、カテゴリカルデータに対して利用できる。scale_colour_viridis_c()を使って、人口を色で表現するコロプレスマップを作成することもできる。# 人口を色で表現するコロプレスマップの作成
library(ggplot2)
ggplot(data = kokusei03) + # 地図データの指定
geom_sf(aes(fill = JINKO), color = "black") + #
scale_fill_viridis_c(option = "inferno", alpha = 0.9) + # カラースケールの指定
theme_minimal() + # ミニマルテーマの適用
labs(title = "Population Census of Japan",
subtitle = "Population Distribution by Small Area",
caption = "Source: Statistics Bureau, Ministry of Internal Affairs and Communications",
fill = "Population") +
theme(axis.text = element_blank(), # 目盛りを非表示
axis.title = element_blank()) + # 軸タイトルを非表示
geom_sf_text(aes(label = CITY_LABEL), size = 2,
family = "Osaka", color = "white") # City_NAMEを表示TRUE
# 市区町村番号レベルで地図を集計
library(dplyr)
kokusei03_city <- kokusei03 %>%
group_by(PREF, CITY, PREF_NAME, CITY_NAME) %>%
summarise(geometry = sf::st_union(geometry),
JINKO = sum(JINKO),
SETAI = sum(SETAI)
) %>%
ungroup()
# 保存
sf::st_write(kokusei03_city, "Data_output/kokusei03_city.shp", delete_dsn = TRUE)## Deleting source `Data_output/kokusei03_city.shp' using driver `ESRI Shapefile'
## Writing layer `kokusei03_city' to data source
## `Data_output/kokusei03_city.shp' using driver `ESRI Shapefile'
## Writing 33 features with 6 fields and geometry type Unknown (any).
RColorBrewerパッケージを使って、人口を色で表現するコロプレスマップを作成する。scale_fill_gradientn(colors=brewer.pal(10,"GnBu"), na.value = "white")を使って、色のグラデーションを指定する。
"GnBu"以外にも、 "YlGnBu"、
"RdPu", "YlOrRd"などが利用できる。na.valueは、欠損値の色を指定する。10は、色の数(3以上の数値)を指定する。# 地図の作成
library(RColorBrewer)
library(ggplot2)
ggplot(data = kokusei03_city) + # 地図データの指定
geom_sf(aes(fill = JINKO/10000), color = "lightgrey") + # 人口を色で表現
scale_fill_gradientn(colors=brewer.pal(10,"GnBu"),
na.value = "white")+
labs(fill = "Population \n (10 thousands)") +
theme_minimal() + # ミニマルテーマの適用
labs(title = "Population Census of Japan",
subtitle = "Administrative Boundaries of Japan Cities",
caption = "Source: Statistics Bureau, Ministry of Internal Affairs and Communications") +
theme(axis.text = element_blank(), # 目盛りを非表示
axis.title = element_blank()) + # 軸タイトルを非表示
geom_sf_text(aes(label = CITY_NAME), size = 2, family = "Osaka", color = "red") # City_NAMEを表示TRUE