この記事は ISer Advent Calendar 2020 の 17 日目の記事として書かれました.
元データ
以下の国土数値情報ダウンロードサイトからダウンロード可能です.
https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N05-v1_3.html
※非商用に限りデータを使用することができます.
フォルダにある N05-19_RailroadSection2.geojson
を使って路線図を描いていきます.
JSON の読み取り
Python のモジュール json
を用います.自動でパースしてくれます.超便利.
import json
import numpy as np
import matplotlib.pyplot as plt
json_open = open('N05-19_RailroadSection2.geojson', 'r', encoding = 'utf_8_sig')
json_load = json.load(json_open)
路線図の出力
とりあえず今回は東京メトロの路線のみを対象とします.
運営会社が東京地下鉄である路線のうち,coordinates
内のデータを引っ張ってきます.これは路線を折れ線で表したデータです.
rc = {
'2号線日比谷線' : '#b5b5ac',
'3号線銀座線' : '#ff9500',
'4号線丸ノ内線' : '#f62e36',
'4号線丸ノ内線分岐線' : '#f62e36',
'5号線東西線' : '#009bbf',
'7号線南北線' : '#00ac9b',
'8号線有楽町線' : '#c1a470',
'9号線千代田線' : '#00bb85',
'11号線半蔵門線' : '#8f76d6',
'13号線副都心線' : '#9c5e31'
}
for railway_data in json_load['features']:
if railway_data['properties']['運営会社'] == '東京地下鉄':
segments = railway_data['geometry']['coordinates']
x, y = [], []
for xy in segments:
x.append(xy[0])
y.append(xy[1])
plt.plot(np.array(x), np.array(y), color = rc[railway_data['properties']['路線名']])