官民データ活用推進基本法(2016年)において,地方自治体はオープンデータに取り組むことが義務付けられた.オープンデータの活用により地方自治体の課題解決や活性化が期待されている.
ここでは,香川県高松市のオープンデータたかまつから商店街通行量情報をダウンロードし,可視化.
データ変更に伴い,R
コード改訂.
通行量調査地点周辺地図 1
ライブラリ:sf
,tidyverse
,ggspatial
オープンデータたかまつ > データセット > 交通 > 商店街通行量情報 > data.csv (アクセス日:2024-03-16)2
read.csv()
でデータ読込.文字化け防止のため,fileEncoding="utf8"
を指示.
read_sf
:データ読込.pedestrian_traffic
と名付ける.データの加工1
mutate()
を用いて,新しい列を追加. sf
クラスst_as_sf()
を利用して,sf
クラスのデータ作成.
crs
)は日本測地系JGD2011
(EPSG:6668
)を指示.pedestrian_traffic %>%
st_as_sf(coords=c("longitude", "latitude"),
crs="EPSG:6668") ->
pedestrian_traffic
作成したデータの中身確認と歩行者数の可視化
Geometry type
がポイント(POINT
),CRS
がJGD2011
であることが確認できる.## Simple feature collection with 6 features and 3 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 134.0474 ymin: 34.34566 xmax: 134.0534 ymax: 34.34656
## Geodetic CRS: JGD2011
## name 平日 休日 geometry
## 1 兵庫町(西) 4626 3536 POINT (134.0474 34.34656)
## 2 兵庫町(東) 8671 9667 POINT (134.0503 34.34612)
## 3 片原町西(西) 10294 14154 POINT (134.0506 34.34624)
## 4 片原町西(東) 5718 7126 POINT (134.0508 34.34605)
## 5 片原町東(西) 3328 3439 POINT (134.0534 34.34566)
## 6 丸亀町(北) 10200 15044 POINT (134.0505 34.34594)
とりあえず,平日の歩行者数を可視化.
ggplot()+
geom_sf(data=pedestrian_traffic,
aes(color=平日), size=3)+
scale_color_viridis_c(option="G", direction=-1)
データの加工2(ワイド→ロング)
平日と休日の違いをわかりやすくするためにデータを加工.
facet_wrap()
が比較のためには有効.
gather()
:ワイドフォーマットをロングフォーマットに変更.day
と名付けた列を新しくつくる(key=day
).day
の列で平日と休日を識別する.pt
と名付ける)にまとめる.
value=pt
の後に縦方向に並ばせたい列名(ここでは「平日」,「休日」)を記入.pedestrian_traffic1
と名付ける.作成したデータの中身確認
pedestrian_traffic2
と名付ける.head()
とtail()
を用いて,最初の6行と最後の6行を表示.
## Simple feature collection with 6 features and 2 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 134.0474 ymin: 34.34566 xmax: 134.0534 ymax: 34.34656
## Geodetic CRS: JGD2011
## day pt geometry
## 1 平日 4626 POINT (134.0474 34.34656)
## 2 平日 8671 POINT (134.0503 34.34612)
## 3 平日 10294 POINT (134.0506 34.34624)
## 4 平日 5718 POINT (134.0508 34.34605)
## 5 平日 3328 POINT (134.0534 34.34566)
## 6 平日 10200 POINT (134.0505 34.34594)
## Simple feature collection with 6 features and 2 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: 134.0489 ymin: 34.33753 xmax: 134.0513 ymax: 34.33991
## Geodetic CRS: JGD2011
## day pt geometry
## 25 休日 9784 POINT (134.0492 34.33956)
## 26 休日 7874 POINT (134.0493 34.33893)
## 27 休日 5264 POINT (134.0513 34.33865)
## 28 休日 3819 POINT (134.0489 34.33753)
## 29 休日 1870 POINT (134.0502 34.33962)
## 30 休日 4282 POINT (134.0493 34.33991)
「平日」,「休日」の順番に並べたいが,何も指示しないと「休日」,「平日」の順番になってしまう.意図した順番と異なり,意図したい順番に並べ替えたい場合は,factor()
を利用.
factor()
で順番を「平日」,「休日」に指定.
#必要に応じて,並び替え
pedestrian_traffic1 %>%
mutate(day=factor(day, levels=c("平日", "休日"))) ->
pedestrian_traffic1
背景としてOpenStreetMap(OSM)を利用.
annotation_map_tile()
:背景にOSMのタイルを使う.labs()
に出典を記入.coord_sf()
:座標参照系を設定.設定しなくても問題はないが,設定したことにより背景の地図が鮮明になった.facet_wrap()
:複数の地図の並べ方を指示.
~day
:平日と休日の地図を作成.ncol=2
:1行に地図を2枚並列.plot.caption
)は左寄せ.text
)を拡大(size=12
).ggplot()+
annotation_map_tile(type="cartolight",
zoomin=0)+
geom_sf(data=pedestrian_traffic1,
aes(color=pt), size=3)+
scale_color_viridis_c(option="G",
direction=-1,
alpha=0.8)+
facet_wrap(~day, ncol=2)+
labs(color="人",
caption="\U00a9 OpenStreetMap contributors \U00a9 CARTO
出典:オープンデータたかまつ")+
ggtitle("高松市商店街歩行者通行量(2023年)")+
coord_sf(crs="EPSG:6668")+
theme_void()+
theme(plot.caption=element_text(hjust=0),
text=element_text(size=12))
↑
の地図をバブルマップで作成.
st_coordinates()
で座標を再取得するように指示.
x
,2番目の数値(緯度)をy
とするように指示.coord_sf()
:座標参照系を設定しなかった場合,背景地図が示されなかった.このため設定. #もとのデータで作業
pedestrian_traffic1 %>%
mutate(x=st_coordinates(geometry)[, 1],
y=st_coordinates(geometry)[, 2]) ->
pedestrian_traffic
ggplot()+
annotation_map_tile(type="cartolight",
zoomin=0)+
geom_point(data=pedestrian_traffic,
aes(x=x, y=y,
color=pt,
size=pt))+
scale_color_viridis_c(option="G",
direction=-1,
guide="legend",
alpha=0.7)+
scale_size_area(max_size=6)+
facet_wrap(~day, ncol=2)+
labs(color="人", size="人",
x="", y="",
caption="\U00a9 OpenStreetMap contributors \U00a9 CARTO
出典:オープンデータたかまつ")+
ggtitle("高松市商店街歩行者通行量(2023年)")+
coord_sf(crs = "EPSG:6668")+
theme_void()+
theme(plot.caption=element_text(hjust=0),
text=element_text(size=12))
Rによる地理空間データの可視化
この地図はmapview()
を用いた作成.mapview()
地理空間データの可視化についてはインタラクティブな地図によるデータの可視化参照.↩︎
作成日(2022-07-06)時点では2021年の商店街通行量情報がテキストファイルとEXCELファイルであったが,改定日(2024-03-16)現在は2023年の商店街通行量情報がcsvファイルとGeoJSONファイルに変更された模様.↩︎