【Python】日本全国のインターチェンジの緯度経度を散布図にしてみた

こんにちは、ヒガシです。

 

最近地図データを使って遊ぶことにはまっております。

 

というわけで今回は日本全国にちらばっているインターチェンジやジャンクションの緯度経度の座標を散布図としてプロットしてみるということをやってみようと思います。

 

高速道路網が整備されていない地域が一目瞭然となりそうですね。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

全国のインターチェンジに関するデータをダウンロードする

まずはデータを集めなければ話になりません。

ということで今回は以下の国土交通省が管理するサイトからデータをダウンロードしてきましょう。

国土数値情報 | 高速道路時系列データ

 

ここからN06-23_GML.zipをダウンロードして解凍します。

するとN06-23_Joint.geojsonというファイルがでてきます。

 

こいつの中に全国のインターチェンジの名前とその緯度経度情報が入っています。

 

スポンサーリンク

geojsonファイルをPythonで読み込む

次にダウンロードしたgeojsonファイルをpythonで読み込んでいきます。

 

が、しかしここで問題発生。

 

geojsonファイルを読み込めない・・・。

 

調べたところgeopandasというライブラリをインストールすればいける的なことが書かれていましたが、私はいろいろ格闘したものの結局できず・・・。

 

行き詰ったらパワープレー!

 

ということで以下手順です。

①先ほどダウンロードしたgeojsonファイルをメモ帳かなんかで開いてコピー

(このファイルはPythonの辞書型と同じ形式で書かれています。)

②以下の画像のように適当な変数=のあとに張り付ける。

geojsonファイルをPythonプログラム上に書き出した様子

➂nullを文字列として扱うようにする

このファイルにはnullというデータが多数存在します。

そのままPythonプログラムを実行するとエラーになるのでnullの部分を文字列に変換してあげます。(要は””で囲ってあげる。)

geojsonファイル内のnullデータを修正している様子

④いくつかデータにエラーがあるので修正する。

伊予/みたいになぜかインターチェンジの名前の後に/がついているデータが2,3個ありました。

こいつらもエラーが出しますので/を消して対処します。

 

geopandasでうまく読めなかったのはこいつが原因か?

 

いろいろ面倒でしたがなんとかPython上にgeojsonファイルを読み込むことができました。

 

スポンサーリンク

読み込んだgeojsonファイルの中身を確認してみる

先ほど読み込んだデータを以下のように確認してみましょう。

ic_data[“features”][0]

 

こんな感じでデータが表示されればOKです。

geojsonファイルを読み込んで中身を確認した結果

いろいろデータが入っていますが、とりあえず一番最後のcoordinatesが経度、緯度でしょうね。

 

スポンサーリンク

全インターチェンジの経度、緯度を散布図にしてみる

事前準備が整ったので最後に先ほど取得した全国のインターチェンジの経度、緯度を散布図上に表示させてみましょう。

 

以下がそのプログラムです。

import matplotlib.pyplot as plt
import numpy as np
for i in range(len(ic_data["features"])):
    latlng_array = np.array(ic_data["features"][i]["geometry"]["coordinates"])
    plt.scatter(latlng_array[0], latlng_array[1],color='r',s=1)
plt.show()

 

以下が出てきた結果です。

日本全国のインターチェンジの座標をプロットした結果

問題なく日本列島っぽい散布図が出力されましたね。

 

北海道がいびつな形をしてますね。

さすがに全地域に高速道路網を張り巡らせることはできていない様子が見て取れます。

 

東北の真ん中あたりもスカスカですね。

 

奥羽山脈があるあたりか。

 

スポンサーリンク

おわりに

というわけで今回は国土交通省が公開する全国のインターチェンジ情報を使って遊んでみました。

このように面白いデータが公開されているので他にもいろいろと遊んでみようと思います。

 

それではまた!

コメント

タイトルとURLをコピーしました