座標参照系をWGS84(EPSG:4326)に変換

目次
座標参照系をWGS84(EPSG:4326)に変換
座標参照系をWGS84(EPSG:4326)に変換
@ creator • Click to Play Video Inline
🎵 座標参照系をWGS84(EPSG:4326)に変換
R言語で作る日本の国土マップ!GISデータ可視化の最新実践ガイド

オープンデータの利活用が進む現在、統計データと地理空間情報を融合させた空間分析の需要はかつてない高まりを見せています。エリアマーケティングや都市計画、防災シミュレーションに至るまで、位置情報に基づいた地図の可視化は説得力のあるインサイトを生み出す強力な武器です。

オープンソースの統計解析環境であるR言語は、空間ベクトルデータを扱う標準規格に最適化され、本格的なGIS(地理情報システム)ソフトウェアに匹敵する描画能力を備えています。国土交通省が提供するオープンデータを手元のR環境に取り込み、美しい国土マップとして描画するまでの実践プロセスを余すところなく解説します。

📌 【この記事の重要ポイントまとめ】
  • 要点1:国土交通省が公開する「国土数値情報」を活用することで、日本全国の行政区域やインフラデータをR言語上で精緻にマッピングできる。
  • 要点2:現代のR空間分析は「sf」パッケージがデファクトスタンダードであり、「ggplot2」による美しい静止画地図や「leaflet」による動的Web地図が容易に構築可能。
  • 要点3:文字コードの指定や測地系(CRS/EPSGコード)の正しい変換を押さえることで、位置ズレや文字化けといった初心者が陥りがちなトラブルを回避できる。

【基礎知識】国土交通省のGISデータと「国土数値情報」の全体像

日本の国土に関する空間データを取得する際、最大の情報源となるのが国土交通省 GISデータのポータルサイト「国土数値情報ダウンロードサイト」や国土情報ウェブマッピングシステムです。

ここでは、国土計画の策定や学術研究、民間ビジネスでの活用を目的に、膨大な地理空間情報が無償で公開されています。具体的には以下のようなデータセットが整備されています。

  • 行政区域データ:都道府県・市区町村の境界線、ポリゴンデータ
  • 交通インフラデータ:鉄道軌道、駅位置、幹線道路ネットワーク、バスルート
  • 自然・防災データ:河川流路、水系、土砂災害警戒区域、避難施設
  • 社会・経済データ:用途地域、公示地価、工業団地、国勢調査に紐づくメッシュデータ

提供形式は主にシェープファイル(Shapefile)やGeoJSON、GML形式です。特にシェープファイルは複数のファイル(.shp, .shx, .dbf, .prjなど)で構成されるGISの標準形式であり、国土数値情報をR言語で処理する際の基本フォーマットとなります。

【環境構築】Rで地図プロットを行う必須パッケージ「sf」の導入

かつてR言語で空間データを扱う際は「sp」や「rgdal」「rgeos」といったパッケージを組み合わせるのが主流でした。現在のRにおける地理空間データ処理は、国際標準規格「Simple Features」に準拠したsfパッケージが一手に担っています。

sfパッケージの最大の特徴は、空間データを一般的な「データフレーム(data.frame)」の拡張として保持できる点にあります。属性テーブルの各行に対応する幾何情報(geometry列)がスマートに統合されているため、tidyverse(dplyrなど)の構文を用いた直感的なデータ加工が可能です。

基本となる開発環境は、R本体とRStudio(またはPositron)を用意した上で、コンソールから以下のパッケージをインストールして構築します。

# 空間データ処理・可視化の必須パッケージ install.packages(c("sf", "tidyverse", "leaflet", "scales")) library(sf) library(tidyverse) 

これらを取り揃えることで、データの読み込みから座標変換、属性抽出、描画までを一気通貫で実行できる環境が整います。

【実践手順】シェープファイル読み込みとggplot2による都道府県マップ作成

ここからは、実際にダウンロードしたオープンデータを用いて日本地図を描画する具体的な手順を解説します。

1. シェープファイルの読み込み

国土数値情報から取得した行政区域データ(シェープファイル)を展開し、sfパッケージのst_read()関数で読み込みます。日本の行政データを取り扱う際に細心の注意を払うべきポイントが文字コードの指定です。多くのシェープファイルはShift-JIS(CP932)で格納されているため、オプションでエンコーディングを明示します。

# シェープファイルの読み込み(Shift-JIS対策) japan_shp <- st_read( dsn ="path/to/N03-23_230101.shp", options ="ENCODING=CP932", stringsAsFactors = FALSE ) 

2. データのフィルタリングと加工

全国データは非常にサイズが大きく、描画処理に負荷がかかります。分析対象が特定の地域である場合は、dplyrのfilter()関数を用いて対象エリアを絞り込みます。例えば、東京都のみを抽出して都道府県マップをRで処理するコードは以下の通りです。

# 東京都のみを抽出 tokyo_sf <- japan_shp %>% filter(N03_001 =="東京都") 

3. ggplot2による静止画地図のプロット

抽出したデータは、グラフィック描画パッケージ「ggplot2」のgeom_sf()レイヤーを用いることで、高品質な地図へと変換されます。ggplot2 地図作成(日本)の基本構文は非常にシンプルです。

# ggplot2を用いた行政区域マップの描画 ggplot(data = tokyo_sf) + geom_sf(fill ="#e0e7ff", color ="#4338ca", linewidth = 0.3) + theme_minimal(base_family ="sans") + labs( title ="東京都 行政区域マップ", subtitle ="国土交通省「国土数値情報(行政区域データ)」より作成", caption ="Created with R & sf package" ) + theme( plot.title = element_text(face ="bold", size = 16), panel.grid.major = element_line(color ="#f1f5f9") ) 

この記述だけで、境界線がシャープに引かれた洗練された行政区域マップが出力されます。人口や地価などの統計数値を結合すれば、色の濃淡で数値を表現するコロプレス図(階層区分図)も容易に作成できます。

【Web地図】R言語「leaflet」の使い方と地理院タイルの重ね合わせ

ブラウザ上で拡大・縮小やドラッグ移動が可能なインタラクティブマップを構築したい場合は、JavaScriptの有名ライブラリをRから操作できるR言語 leafletを活用します。

leafletはデフォルトでOpenStreetMapを背景に表示しますが、日本の地理情報を扱う際は、国土地理院が配信する地理院タイルをRで可視化するのがベストプラクティスです。日本語表記の精度が高く、標準地図、淡色地図、写真(オルソ画像)など用途に応じた高品位なベースマップを選択できます。

library(leaflet) tokyo_wgs84 <- st_transform(tokyo_sf, crs = 4326) # 地理院タイル(淡色地図)を背景にした動的マップの作成 leaflet(data = tokyo_wgs84) %>% # 国土地理院 淡色地図タイルの追加 addTiles( urlTemplate ="https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png", attribution ="© 国土地理院" ) %>% # ポリゴンのプロット addPolygons( fillColor ="#3b82f6", fillOpacity = 0.4, color ="#1d4ed8", weight = 1, popup = ~paste0("", N03_004, "") ) 

このスクリプトを実行すると、RStudioのViewerペインやHTMLファイル上に軽快に動作するWeb地図が生成されます。市区町村をクリックした際に名称や統計値を表示するポップアップ機能も1行のコードで実装可能です。

【高度な空間分析】メッシュデータを用いた国土マップの可視化手法

地域の詳細な人口動態や土地利用状況を把握するには、行政界にとらわれない均一なグリッド単位であるメッシュデータ(地域メッシュ)の活用が欠かせません。

総務省統計局や国土交通省から配布されている基準地域メッシュ(1kmメッシュ、500mメッシュなど)は、メッシュコードと呼ばれる固有の番号体系を持っています。R言語の「jpmesh」パッケージ等を利用すると、メッシュコードから直接ポリゴンデータを生成し、迅速に地図上へ配置できます。

# メッシュデータの活用イメージ # jpmeshパッケージでメッシュコードをsfオブジェクトへ変換 library(jpmesh) # メッシュごとの人口データを結合してヒートマップを描画 ggplot(data = mesh_population_sf) + geom_sf(aes(fill = population), color = NA) + scale_fill_viridis_c(option ="plasma", name ="人口(人)") + theme_void() + labs(title ="地域メッシュ別 人口分布ヒートマップ") 

メッシュデータを用いることで、標高・傾斜区分、将来推計人口、災害リスク情報などを幾何学的にオーバーレイし、空間的な偏りを直感的に浮き彫りにするハイレベルな分析が実現します。

【トラブル防止】初心者がつまずきやすい落とし穴と解決策

R言語で地理空間データを扱う際、エラーの原因となる代表的なポイントとその対処法をまとめました。

1. 座標参照系(CRS)の不一致による位置ズレ

シェープファイルごとに設定されている測地系が異なると、地図を重ね合わせた際にデータが全く別の場所にプロットされます。日本国内のデータでは「JGD2000 / JGD2011(平面直交座標系:EPSG:6669〜6687など)」と、Web地図で標準の「WGS84(EPSG:4326)」が混在しがちです。

必ずst_crs()で現在の設定を確認し、異なるデータを結合・重畳する際はst_transform(data, crs = 4326)などの関数を用いて統一してください。

2. ポリゴンの自己交差・トポロジーエラー

複雑な行政区域データを処理する際、st_union()や空間結合(st_join())で「TopologyException」等のエラーが発生することがあります。これはポリゴンの頂点が交差していることが原因です。st_make_valid()を実行して形状を自動修復することで、大半のエラーは解消されます。

3. データサイズ過多による描画の遅延

全国規模のシェープファイルは頂点数が数百万単位に達し、描画やメモリに深刻な負荷を与えます。広域表示を行う場合は、st_simplify(dTolerance = 100)を用いて形状のトポロジーを保ちつつ頂点を間引く(軽量化する)処置が実務上有効です。

【国土マップ×R言語】に関するよくある質問(FAQ)

Q1:国土数値情報や国土地理院タイルのデータをレポートや商用サービスで利用できますか?
A1:利用可能です。国土交通省の国土数値情報や国土地理院の地図タイルは、基本的に政府標準利用規約(CC BY互換)に基づきオープンデータとして提供されています。利用規約に従い、「出典:国土交通省 国土数値情報」や「© 国土地理院」といった適切なクレジット表記を行えば、商用利用や研究発表、Webサイトへの埋め込みが認められています。

Q2:RとPython、GISデータの可視化にはどちらが適していますか?
A2:目的やエコシステムの好みによって選択が分かれます。R言語は「sf」と「tidyverse」の連携が極めて美しく、統計解析から論文・レポート品質の地図グラフィック作成までをシームレスに行える強みがあります。一方、PythonはGeoPandasやShapelyが充実しており、機械学習パイプラインへの統合やWebバックエンド連携に強みがあります。静止画・統計主体の空間分析であればR言語は圧倒的に快適です。

Q3:シェープファイルを読み込むと日本語の列名や属性値が文字化けします。解決策は?
A3:読み込み関数st_read()の引数にoptions ="ENCODING=CP932"またはoptions ="ENCODING=SHIFT-JIS"を指定してください。Windows環境・Mac環境を問わず、日本のオープンデータに多いShift-JISエンコーディングを正しくUTF-8環境へ取り込めます。

まとめ:空間情報エコシステムを使いこなし精緻な地図表現へ

R言語における地理空間データのエコシステムは、sfパッケージの定着や各種グラフィックライブラリの成熟によって、極めて洗練された開発体験を提供しています。膨大なオープンデータである国土数値情報を正しく読み解き、適切なCRS変換とスタイル設定を施すことで、専門的なGISソフトウェアを立ち上げることなく、コードベースで再現性の高い地図表現が可能です。

まずは身近な自治体の行政境界データや駅・鉄道データのプロットから手を動かし、空間分析がもたらすビジュアルの説得力を体感してみてください。 (出典: 国土 マップ r(Yahoo!ニュース))

国土 マップ r
国土 マップ r
国土 マップ r