1 目的

  • 隣接するデータを六角形ごとにまとめた地図を六角形(Hexbin)マップとよぶ.
    • Ubarが開発した地球上の領域を六角形のセルで覆ったH3がよく利用される.
    • ここでは,HDXから提供されているオープンデータの一つであるKontur Populationを利用.
      • このデータは各H3セルに総人口データが含まれる.各セルは同じ面積だと見なされているため,人口密度として解釈可能.

パッケージsftidyverse

library(sf)
library(tidyverse)

#sfオブジェクトの編集,簡略化
library(rmapshaper)

2 Konturデータ

2.1 ダウンロード

  • 拡張子.gpkgファイル(地理空間データの保存によく利用)で提供されている.

  • HDX Kontur > 検索欄にJapanと入力し,Enterキー > Japan: Population Density for 400m H3 Hexagons 

  • kontur_population_JP_20231101.gpkg > DOWNLOAD

2.1.1 シェープファイルの読込

  • st_transform():JSD2011(EPSG:6668)に投影するため.
hexagons <- 
  read_sf("kontur_population_JP_20231101.gpkg") %>% 
     st_transform("EPSG:6668")

#最初の6行
hexagons %>% 
  head()
h3 population geom
884ec9aeb3fffff 1 POLYGON ((142.1747 26.61367…
884ec9acddfffff 73 POLYGON ((142.1776 26.62691…
884ec9acd9fffff 1 POLYGON ((142.1715 26.62109…
884ec9acd7fffff 65 POLYGON ((142.1651 26.63593…
884ec9acd5fffff 8 POLYGON ((142.1744 26.63433…
884ec9acd3fffff 11 POLYGON ((142.1591 26.63011…
  • h3:ポリゴンとして表現されるH3セルのインデックス(H3Indexとよばれる).
  • population:各H3セルに含まれる総人口.

2.1.2 可視化

  • とりあえず,可視化.
    • 六角形で覆われているが,小さくてわからない.
ggplot()+
  geom_sf(data=hexagons)+
  ggtitle("図1:六角形マップ(日本)")+
  theme_bw()

神奈川県周辺

  • 神奈川県周辺だけ可視化.
    • x軸(経度)の範囲:138.8139.8
    • y軸(緯度)の範囲:35.135.8
ggplot()+
  geom_sf(data=hexagons)+
  ggtitle("図3:六角形マップ(神奈川県周辺)")+
  coord_sf(xlim= c(138.8, 139.8), 
           ylim=c(35.1, 35.8))+
  theme_bw()

  • 六角形で覆われていることを確認.
    • 今回は人口データのため,陸地の山岳地帯などpopulationに値がないポリゴンはh3がそもそもデータに含まれず,空白

3 人口密度の可視化

  • 人口密度1000人/㎢以上(H3セルは約0.74㎢のため740人以上)をviridisカラーmako色(option="G")で可視化.
    • 人口密度1000人/㎢未満はグレーで表現.
    • 目盛りは常用対数(log10)に変換.
#740人以上の抽出 
hexagons_2 <- hexagons %>% 
  filter(population>=740)

ggplot()+
  geom_sf(data=hexagons, 
          fill="gray", color="gray")+
  geom_sf(data=hexagons_2, 
          aes(fill=population,
              color=population))+
  scale_fill_viridis_b(option="G",
                       trans="log10")+
  scale_color_viridis_b(option="G",
                        trans="log10")+
  labs(fill="人", color="人",
       caption="出典:Kontur Population")+
  ggtitle("図2:人口密度(2023年)")+
  theme_void()

4 神奈川県

4.1 行政区域と人口密度の可視化

  • 行政区域データを利用して,神奈川県を可視化.

    • 国土数値情報ダウンロードサイト > 行政区域(ポリゴン) > 神奈川県 > 2024年(令和6年)
    • rmapshaperパッケージのms_dissolve()を使用し,市区町村ではなく県単位で境界を統合.N03_001列が神奈川県なので,これでまとめる.
Kanagawa_map <-
  read_sf("N03-20240101_14_GML/N03-20240101_14.shp")

#神奈川県を一つのポリンゴンとしてまとめる
Kanagawa_map <- Kanagawa_map %>% 
  ms_dissolve(field="N03_001") 
  • 人口を色付けし,神奈川県を可視化.
ggplot()+
  geom_sf(data=hexagons, 
          aes(fill=population,
              color=population))+
  scale_fill_viridis_c(option="G")+
  scale_color_viridis_c(option="G")+
  geom_sf(data=Kanagawa_map, color="gray",
          linewidth=0.6, fill="NA")+
  labs(fill="人", color="人")+
  ggtitle("図4:神奈川県と人口密度")+
  coord_sf(xlim=c(138.8, 139.8), 
           ylim=c(35.1, 35.8))+
  theme_void()

4.2 神奈川県の人口密度

#準備
st_agr(hexagons)="constant"
st_agr(Kanagawa_map)="constant"
#重複部分の抽出
Kanagawa_pop <- 
  st_intersection(hexagons, Kanagawa_map)
  • 上のコードで神奈川県だけをくり抜いているため,coord_sf()による範囲指定を削除.
#可視化(完成)
ggplot()+
  geom_sf(data=Kanagawa_pop, 
          aes(fill=population,
              color=population))+
  scale_fill_viridis_b(option="G")+
  scale_color_viridis_b(option="G")+
  labs(fill="人", color="人",
       caption="出典:Kontur Population
       国土数値情報")+
  ggtitle("図5:神奈川県人口密度(2023年)")+
  theme_void()

5 応用

  • rayshader()を利用すると,図5を3Dマップにすることが可能.ここでは,以下の作業はコンピュータへの負荷が大きいため,示さない.

Rによる地理空間データの可視化

アイコン

Font Awesome 6.7.2