Rで解析:行政区画の境界データを取得できる「geobounds」パッケージの紹介
「geobounds」パッケージは、世界各国の行政区画の境界線データを取得できるパッケージです。国名またはISO 3166-1 alpha-3の国コードを渡すと、国境から都道府県・州、市区町村といった各レベルの区域を、地図作成や空間解析にそのまま使える「sf」オブジェクトとして受け取れます。
データはgeoBoundariesプロジェクトからインターネット越しに取得するため、実行には接続環境が必要です。国ごとに配布元やライセンスが異なる境界データを、Rから同じ手順でそろえたい人に向いています。地図や空間解析の下準備を進めやすくなるのではないかと考えます。
パッケージバージョンは1.0.1。Windows 11 x64 (build 26200)のR version 4.6.1で確認しています。
<おすすめのRに関する書籍です>
パッケージのインストール
下記コマンドを実行してください。
# パッケージのインストール
install.packages("geobounds")
# パッケージの読み込み
library("geobounds")
# プロットと空間データの操作で使用
library("ggplot2")
library("sf")
Linking to GEOS 3.14.1, GDAL 3.12.1, PROJ 9.7.1; sf_use_s2() is TRUEコマンド例
詳細はコメント、パッケージのヘルプを確認してください。
「sf」オブジェクトは、地図上の点や線、面といった空間データを、通常のデータフレームと同じ感覚で扱うためのデータ構造です。geoboundsが返す境界データもこの形式で、1行が1つの区域、列にその名称やコードが入ります。
geoBoundariesは、世界各国の行政区画の境界データを配布しているプロジェクトです。ADM0が国全体、ADM1が都道府県や州にあたる第1レベル、ADM2がその下の市区町村にあたる第2レベルというように、数字が大きいほど細かい区分を指します。
取得したデータはキャッシュに保存され、次回以降は同じダウンロードを繰り返しません。保存先の指定や確認、削除を行うコマンドも用意されています。
行政区画レベルを指定した境界データの取得:gb_getコマンド
取得する行政区画レベルをadm_lvlで指定して、国全体から市区町村までの境界データを取り出す基本のコマンドです。ここでは日本の第1レベルにあたる都道府県の境界を取得します。
| オプション | 意味 | 初期値 |
|---|---|---|
| country | 国名またはISO 3166-1 alpha-3の国コード。”all”で全ての国を対象にする | なし |
| adm_lvl | 取得する行政区画レベル。”adm0″は国境、”adm1″は第1レベル、以降は”adm2″などと指定する。”all”で利用可能な全レベル | “adm0” |
| simplified | TRUEで精度は落ちるが描画の速い簡易版の境界を取得する | FALSE |
| release_type | 取得するデータ系列。”gbOpen”、”gbHumanitarian”、”gbAuthoritative”のいずれか | c(“gbOpen”, “gbHumanitarian”, “gbAuthoritative”) |
| quiet | TRUEで処理中のメッセージを表示しない | TRUE |
| overwrite | TRUEでソースのzipファイルを再ダウンロードする | FALSE |
| cache_dir | ダウンロードしたファイルを保存するディレクトリのパス。NULLで既定のキャッシュ先を使う | NULL |
# 日本の第1レベル(都道府県)の境界を簡易版で取得
japan_adm1 <- gb_get("Japan", adm_lvl = "adm1", simplified = TRUE)
# 取得した区域の数を確認
nrow(japan_adm1)
[1] 47
# 区域名が入っている列の先頭を確認
head(japan_adm1$shapeName)
[1] "Osaka Prefecture" "Oita" "Hyogo Prefecture" "Fukui Prefecture"
[5] "Shiga" "Nara Prefecture"
# 47都道府県の境界をまとめて描画
ggplot(japan_adm1) +
geom_sf(fill = "#E8F0E3", color = "grey40")47都道府県の境界をまとめて描画

第2レベルの境界データの取得:gb_get_adm2コマンド
gb_get_adm0からgb_get_adm5までは、行政区画レベルを名前で固定した取得用のコマンドです。gb_get_adm2は第2レベル、日本では市区町村にあたる境界を取得します。取得後にsfパッケージのst_cropで京都府周辺の経緯度の範囲に切り出します。
| オプション | 意味 | 初期値 |
|---|---|---|
| country | 国名またはISO 3166-1 alpha-3の国コード。”all”で全ての国を対象にする | なし |
| simplified | TRUEで精度は落ちるが描画の速い簡易版の境界を取得する | FALSE |
| release_type | 取得するデータ系列。”gbOpen”、”gbHumanitarian”、”gbAuthoritative”のいずれか | c(“gbOpen”, “gbHumanitarian”, “gbAuthoritative”) |
| quiet | TRUEで処理中のメッセージを表示しない | TRUE |
| overwrite | TRUEでソースのzipファイルを再ダウンロードする | FALSE |
| cache_dir | ダウンロードしたファイルを保存するディレクトリのパス。NULLで既定のキャッシュ先を使う | NULL |
# 日本の第2レベル(市区町村)の境界を簡易版で取得
japan_adm2 <- gb_get_adm2("Japan", simplified = TRUE)
# 京都府周辺の経度・緯度の範囲でデータを切り出す
kyoto_area <- st_crop(
japan_adm2,
xmin = 134.8, xmax = 136.1,
ymin = 34.7, ymax = 35.8
)
Warning message:
attribute variables are assumed to be spatially constant throughout all geometries
# 切り出した市区町村の境界を描画
ggplot(kyoto_area) +
geom_sf(fill = "#F5E6C8", color = "grey50")切り出した市区町村の境界を描画

<おすすめのRに関する書籍です>
世界規模の統合データからの境界データの取得:gb_get_worldコマンド
gb_get_worldは、各国の境界を1つにまとめたCGAZ(Comprehensive Global Administrative Zones)データセットから境界を取り出します。対象はadm0からadm2までで、国をまたいで縮尺のそろった境界がほしいときに使います。ここでは日本の第1レベルを取得し、gb_getの結果と区域数を見比べます。
| オプション | 意味 | 初期値 |
|---|---|---|
| country | 国名またはISO 3166-1 alpha-3の国コード。”all”で全ての国を対象にする | “all” |
| adm_lvl | 取得する行政区画レベル。”adm0″、”adm1″、”adm2″のいずれか | “adm0” |
| quiet | TRUEで処理中のメッセージを表示しない | TRUE |
| overwrite | TRUEでソースのzipファイルを再ダウンロードする | FALSE |
| cache_dir | ダウンロードしたファイルを保存するディレクトリのパス。NULLで既定のキャッシュ先を使う | NULL |
# CGAZデータセットから日本の第1レベル境界を取得
japan_world <- gb_get_world("Japan", adm_lvl = "adm1")
# gb_getで取得した区域数と見比べる
nrow(japan_world)
[1] 47
# CGAZ版の都道府県境界を描画
ggplot(japan_world) +
geom_sf(fill = "#DCE7F0", color = "grey40")CGAZ版の都道府県境界を描画

利用可能な境界データの一覧の取得:gb_get_metadataコマンド
ダウンロードの前に、対象の国でどのレベルの境界が用意されているか、出典やライセンスは何かを調べるコマンドです。境界データそのものではなく、説明用の表を返します。
| オプション | 意味 | 初期値 |
|---|---|---|
| country | 国名またはISO 3166-1 alpha-3の国コード。”all”で全ての国を対象にする | “all” |
| adm_lvl | 対象とする行政区画レベル。”all”で全レベル | “all” |
| release_type | 対象とするデータ系列。”gbOpen”、”gbHumanitarian”、”gbAuthoritative”のいずれか | c(“gbOpen”, “gbHumanitarian”, “gbAuthoritative”) |
# 日本について利用可能な境界データの一覧を取得
japan_meta <- gb_get_metadata("Japan")
# 何レベル分のデータがあるかを確認
nrow(japan_meta)
[1] 3
# 一覧に含まれる項目名を確認
names(japan_meta)
[1] "boundaryID" "boundaryName"
[3] "boundaryISO" "boundaryYearRepresented"
[5] "boundaryType" "boundaryCanonical"
[7] "boundarySource" "boundaryLicense"
[9] "licenseDetail" "licenseSource"
[11] "boundarySourceURL" "sourceDataUpdateDate"
[13] "buildDate" "Continent"
[15] "UNSDG-region" "UNSDG-subregion"
[17] "worldBankIncomeGroup" "admUnitCount"
[19] "meanVertices" "minVertices"
[21] "maxVertices" "meanPerimeterLengthKM"
[23] "minPerimeterLengthKM" "maxPerimeterLengthKM"
[25] "meanAreaSqKM" "minAreaSqKM"
[27] "maxAreaSqKM" "staticDownloadLink"
[29] "gjDownloadURL" "tjDownloadURL"
[31] "imagePreview" "simplifiedGeometryGeoJSON"
<おすすめのRに関する書籍です>
取得できる最大の行政区画レベルの確認:gb_get_max_adm_lvlコマンド
国ごとに、どこまで細かい行政区画レベルの境界が提供されているかは異なります。このコマンドは、指定した国で取得できる最も深いレベルを返します。
| オプション | 意味 | 初期値 |
|---|---|---|
| country | 国名またはISO 3166-1 alpha-3の国コード。”all”で全ての国を対象にする | “all” |
| release_type | 対象とするデータ系列。”gbOpen”、”gbHumanitarian”、”gbAuthoritative”のいずれか | c(“gbOpen”, “gbHumanitarian”, “gbAuthoritative”) |
# 日本で取得できる最も細かい行政区画レベルを確認
gb_get_max_adm_lvl("Japan")
# A tibble: 1 × 2
boundaryISO maxBoundaryType
<chr> <int>
1 JPN 2ダウンロード先の指定:gb_set_cache_dirコマンド
取得した境界データの保存先を指定します。作業フォルダの中に置いておくと、同じ解析を再開したときに再ダウンロードを避けられます。installにTRUEを渡すと、次回以降のセッションでも同じ保存先を使います。
| オプション | 意味 | 初期値 |
|---|---|---|
| cache_dir | キャッシュ先のディレクトリのパス。NULLで一時ディレクトリを使う | NULL |
| overwrite | TRUEで設定ファイルに保存済みのキャッシュ先を置き換える | FALSE |
| install | TRUEでキャッシュ先を次回以降のセッションでも使えるよう保存する | FALSE |
| quiet | TRUEで処理中のメッセージを表示しない | FALSE |
# ダウンロードしたファイルの保存先を作業フォルダ内に指定
gb_set_cache_dir("kyoto_boundaries", install = FALSE)
✔ geobounds cache directory is 'kyoto_boundaries'.
ℹ To use this cache directory in future sessions, call `gb_set_cache_dir()` with `install = TRUE`.現在のダウンロード先の確認:gb_detect_cache_dirコマンド
いま境界データがどこに保存されるかを返します。gb_set_cache_dirで保存先を指定していなければ、一時ディレクトリのパスが返ります。
| オプション | 意味 | 初期値 |
|---|---|---|
| x | 指定しても無視される | NULL |
# 現在のダウンロード先を確認
gb_detect_cache_dir()
ℹ 'kyoto_boundaries'
[1] "kyoto_boundaries"ダウンロード済みデータの削除:gb_clear_cacheコマンド
キャッシュに保存された境界データを削除します。configにTRUEを渡すと、保存先の設定そのものも消します。作業が終わって容量を空けたいときに使います。
| オプション | 意味 | 初期値 |
|---|---|---|
| config | TRUEでgeoboundsの設定ディレクトリを削除する | FALSE |
| cached_data | TRUEで現在のキャッシュディレクトリとその内容を全て削除する | TRUE |
| quiet | TRUEで処理中のメッセージを表示しない | TRUE |
# キャッシュに保存された境界データを削除
gb_clear_cache(cached_data = TRUE)
この記事が誰かの役に立ちますように。