LoginSignup
5
3

More than 3 years have passed since last update.

Python で路線図を描いてみた

Posted at

この記事は 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']['路線名']])

このようにしてできた路線図がコチラです.
tokyometro.png

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3