1 目的

  • sfパッケージ を用いることで,国土数値情報などで用意されているシェープファイルを可視できる.
    • ここでは,sfパッケージの仕組みと地理空間データの可視化を要約.

2 シェープファイル

  • シェープファイルはベクターデータ.ポイント(点),ライン(線),ポリゴン(面)で地理空間情報を表現.
    • ベクターデータの他,ラスターデータがある.これは,セル(格子状の区画)で地理空間情報を表現.terraパッケージを利用.


  • シェープファイルをsfパッケージで読み込むとsfオブジェクト
    • オブジェクト:データを表現するための基本構造.ベクトル,行列,データフレーム,リスト,ファクターなどの種類がある.Rではデータはすべてオブジェクトとして格納.
    • sfオブジェクトは「sfクラス(クラスとはデータの種類,型のこと)のオブジェクト」のこと(湯谷,2018).
    • sfオブジェクトはデータフレーム.各行が1つの地物(点,線,面)を表し,列には属性情報が格納されている.最大の特徴が属性情報に地理空間情報(geometry:ジオメトリ)が格納されていること.地理空間情報は,他の属性情報の列と異なりsfcクラス.
      • データフレーム:異なる型のデータを列ごとに持つことができるオブジェクト.
      • ラスターデータのファイルを terra パッケージで読み込むと SpatRasterオブジェクト.

3 sfgsfcsfの関係

3.1 sfgオブジェクト

  • sfgオブジェクト:点,線,面のいずれかを表す単一の地理空間情報.座標を持つが,座標参照系(CRS)は含まれない.
    • 神奈川大学(横浜キャンパス)の緯度経度をMapFunから取得し,sfgオブジェクトを作成.
      • 世界測地系:WGS84またはEPSG:4326
library(sf)
library(tidyverse)

#神奈川大学の位置(経度,緯度の順,世界測地系)
KU <- c(139.6207997, 35.4841722)

#sfgオブジェクトの作成
KU_sfg <- KU %>% 
  st_point()

sfgオブジェクトの可視化

ggplot()+
  geom_sf(data=KU_sfg)+
  ggtitle("図1:sfgオブジェクト")+
  theme_bw()

  • しかし,座標参照系が与えられていないため,この点は東経139.62°あたり,北緯35.48°あたりを指しているわけではない.

3.2 sfcオブジェクト

  • sfcオブジェクト:点,線,面を表す地理空間情報.sfgオブジェクトとの違いは,複数の地理空間情報を格納でき,かつ座標参照系(CRS)を含むことが可能.
    • 立地点として東急東横線白楽駅とセブン-イレブン横浜六角橋2丁目店も加え,この二点についても上と同じ手順でsfgオブジェクトにする.
    • st_sfc()を用いて,stgオブジェクトをsfcオブジェクトに変換.crs=で座標参照系を設定.
      • st_sfc()は新しくsfcオブジェクトを作成.それに対して,st_as_sfc()はすでにあるデータをsfcオブジェクトに変換.例えば,st_bbox()などの地理空間情報で作成された境界ボックス(数値のリスト)をsfcオブジェクトに変換する際に利用.
#白楽駅,セブン-イレブンの位置(経度,緯度の順,世界測地系)
Hakuraku <- c(139.6278862, 35.4894679)

Seven_Eleven <- c(139.6235194, 35.4866059)

#sfgオブジェクトの作成
Hakuraku_sfg <- Hakuraku %>% 
  st_point()

Seven_Eleven_sfg <- Seven_Eleven %>% 
  st_point()

#sfcオブジェクトの作成
KU_sfc <- st_sfc(KU_sfg, Hakuraku_sfg,
                 Seven_Eleven_sfg, crs=4326)

#sfcオブジェクトの内容
KU_sfc %>% head()
## Geometry set for 3 features 
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: 139.6208 ymin: 35.48417 xmax: 139.6279 ymax: 35.48947
## Geodetic CRS:  WGS 84
## POINT (139.6208 35.48417)
## POINT (139.6279 35.48947)
## POINT (139.6235 35.48661)
  • 座標参照系が設定されている.
  • ポイントのみ格納されていることがわかる.

sfcオブジェクトの可視化

ggplot()+
  geom_sf(data=KU_sfc)+
  ggtitle("図2:sfcオブジェクト")+
  theme_bw()

  • 図1とは異なり,座標参照系が設定されているため,横軸が東経,縦軸が北緯を表していることが確認できる.
  • 右上のポイントが「白楽駅」の位置を,左下のポイントが「神奈川大学」の位置を,その2点の中間のポイントが「セブン-イレブン」の位置だが,sfcオブジェクトは属性を含んでいないため,どのポイントが「神奈川大学」を指すかわからない.

3.3 sfオブジェクト

  • sfオブジェクト:点,線,面を表す地理空間情報.最大の特徴は属性情報を含み,データフレームであること.
    • 先ほど作成したsfcオブジェクトにsfオブジェクトに変更し,属性として地名を加える.
    • st_sf()を用いて,stcオブジェクトをsfオブジェクトに変換.
    • st_sc()は新しくsfオブジェクトを作成.それに対して,st_as_sfc()はすでにあるデータをsfオブジェクトに変換.


  • 地名を作成し,sfオブジェクト(KU_sf)に追加(mutate()).
#sfオブジェクトの作成
KU_sf <- st_sf(KU_sfc)

#地名作成
地名 <- c("神奈川大学", "白楽駅", "セブン-イレブン")

#地名の追加
KU_sf <- KU_sf %>% 
  mutate(地名=地名)

#KU_sfの内容
KU_sf %>% head() 
KU_sfc 地名
POINT (139.6208 35.48417) 神奈川大学
POINT (139.6279 35.48947) 白楽駅
POINT (139.6235 35.48661) セブン-イレブン
  • 地名が加わったsfオブジェクト(データフレーム)になっている.

sfオブジェクトの可視化

ggplot()+
  geom_sf(data=KU_sf, aes(color=地名),
          size=5)+
  scale_color_viridis_d(option="G")+
  ggtitle("図3:sfオブジェクト")+
  theme_bw()

  • 図3は地名を色分け,凡例により識別している.地名列によりこのようなことが可能に.

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

チュートリアルホーム

参考文献

アイコン

Font Awesome 6.7.2

生成AIの使用について

本稿の作成過程において,ChatGPTを使用してコードに関する助言を得た.サービスを利用した後,内容を確認し,必要に応じて編集を行った.