R学習(2):国土地理院の地球地図データを使った日本地図の可視化
これまでArcGISやQGISを使って地図での可視化をしていましたが、今回はRでShapeファイルを読み込んで可視化したいと思います。Rでは、sfパッケージを使用することで地図データを扱うことができます。
まず、sfパッケージをインストールします。
#sfパッケージのインストール install.packages("sf")
インストールしたsfパッケージに加えて、dplyrとggplot2パッケージを読み込みます。
#パッケージの読み込み library(sf) library(dplyr) library(ggplot2)
今回利用する地図データは、国土地理院で公開されている「地球地図データ」の行政境界データを使用します。
「地球地図データ」を使用する理由としては、別件で日本地図を使って分析する際に使用したことがあるからです。その際、国土数値情報ダウンロードサービスで公開されている「行政区域」データの利用を検討していたのですが、うまく分析に使えなかったこと、加えてファイル容量が大きかったこと(平成30年のデータだとzipファイルで約390MB)から、別のデータを探していたときに、この「地球地図」プロジェクトの存在を知り、分析に利用したところうまくいきました(ちなみにファイル容量もzipファイルで約3MB)。
地球地図は、統一された仕様で作成された陸域の地球規模の地理空間情報です。世界各国・地域の地理空間情報当局(National Geospatial Information Authority: NGIA、日本では国土地理院)が「自国を示す公認データ」として作成しました。地球地図プロジェクトは,持続可能な開発・環境保全・災害の緩和に役立てることを目的に,地球規模の地理空間情報である地球地図を,世界各国・地域の地理空間情報当局が協働して整備する国際プロジェクトです。(国土地理院HP「地球地図とは」より)
2016年にプロジェクトは終了しており、現在国土地理院HPで日本版のデータが公開されています。公開データのうち、行政界データ(第2.1版ベクタ(2015年公開))をダウンロードして利用します。
それでは、st_read()でダウンロードしたデータから「polbnda_jpn.shp」を読み込みます。
#データの読み込み map_jpn <- st_read(dsn = "data/polbnda_jpn.shp") map_jpn
とりあえず、読み込んだデータをplot()で描画します。ggplot()でも、地図の描画ができます。
#マップの描画plot() plot(st_geometry(map_jpn)) #マップの描画ggplot() ggplot(map_jpn)+ geom_sf()
st_crs()で空間参照系(CRS)を確認します。地球地図データは、GRS80楕円体に準拠したITRF94座標系とすることが仕様となっています*1。
#st_crs()で空間参照系(CRS)の確認。 st_crs(map_jpn)
つぎに、空間参照系を設定していきます。st_set_crs()でepsgコードを4612(JGD2000)に設定して、st_transform()でepsg3100(utm54)に変換します。st_crs()で空間参照系(CRS)を再度確認。
map_jpn_utm <- map_jpn %>% st_set_crs(4612) %>% st_transform(3100) st_crs(map_jpn_utm)
変換した地図を描画します。
#マップの描画 ggplot(map_jpn_utm)+ geom_sf()
都道府県単位にまとめた地図も作成してみます。Qiitaの@nozmaさんの記事を参考にしました。group_by()で都道府県単位にまとめてsummarise()で集約することでできるようです。
#都道府県単位にまとめたマップの描画 map_jpn_utm %>% group_by(nam) %>% summarise("") %>% ggplot() + geom_sf()
今回は、Rで地図データの読み込みから可視化までを実行しました。今後、さらに可視化の設定やほかデータとの結合など実践していきたいです。
以前この行政界データを利用してほかのデータと結合する際、データの修正等が必要でした。そのときは、SQLで修正処理をしたのですが、Rでの修正方法も試してみたいと思います。その際にはブログに掲載します。
注)当記事に掲載している地図データは、国土地理院の地球地図日本データを加工して作成したものです。
参考資料