Source code for vtra.plot.rail_network_routes
"""Rail network routes map
"""
import csv
import os
import sys
from collections import OrderedDict, defaultdict
from pprint import pprint
import pandas as pd
import cartopy.crs as ccrs
import cartopy.io.shapereader as shpreader
import matplotlib.pyplot as plt
from vtra.utils import *
[docs]def main():
config = load_config()
output_file = os.path.join(config['paths']['figures'], 'rail-map-routes.png')
rails_file = os.path.join(
config['paths']['data'], 'post_processed_networks', 'rail_edges.shp')
rail_descriptions = os.path.join(
config['paths']['output'], 'network_stats', 'national_rail_routes.xlsx')
ax = get_axes()
plot_basemap(ax, config['paths']['data'],highlight_region=[])
scale_bar(ax, location=(0.8, 0.05))
plot_basemap_labels(ax, config['paths']['data'])
proj_lat_lon = ccrs.PlateCarree()
rail_geoms_by_category = defaultdict(list)
for record in shpreader.Reader(rails_file).records():
cat = record.attributes['name']
geom = record.geometry
rail_geoms_by_category[cat].append(geom)
colours = ['#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a',
'#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94',
'#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d',
'#17becf', '#9edae5']
styles = OrderedDict([])
reader = pd.read_excel(rail_descriptions,encoding='utf-8')
for idx, row in reader.iterrows():
styles.update({row[0]: Style(color=colours[idx], zindex=4, label=row[1])})
for cat, geoms in rail_geoms_by_category.items():
cat_style = styles[cat]
ax.add_geometries(
geoms,
crs=proj_lat_lon,
linewidth=3,
edgecolor=cat_style.color,
facecolor='none',
zorder=cat_style.zindex
)
legend_from_style_spec(ax, styles, loc='center left')
save_fig(output_file)
if __name__ == '__main__':
main()