Source code for atra.plot.rail_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 atra.utils import *


[docs]def main(): config = load_config() data_path = config['paths']['data'] output_file = os.path.join(config['paths']['figures'], 'rail-map-routes.png') rails_file = os.path.join( config['paths']['data'], 'network', 'rail_edges.shp') # colours = ['#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', # '#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94', # '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', # '#17becf', '#9edae5'] colours = ['#1f77b4', '#ff7f0e', '#2ca02c','#9467bd','#8c564b','#e377c2','#d62728'] lines = ['Belgrano','San Martin','Mitre', 'Roca','Sarmiento','Urquiza','Other'] proj_lat_lon = ccrs.PlateCarree() ax = get_axes() plot_basemap(ax, data_path) scale_bar(ax, location=(0.8, 0.05)) plot_basemap_labels(ax, data_path, include_regions=False) rail_geoms_by_category = defaultdict(list) for record in shpreader.Reader(rails_file).records(): cat = record.attributes['linea'].replace('FFCC ','').strip() if 'belgrano' in cat.lower().strip(): cat = 'Belgrano' elif cat not in lines: cat = 'Other' geom = record.geometry rail_geoms_by_category[cat].append(geom) styles = OrderedDict([]) for idx in range(len(lines)): styles.update({lines[idx]: Style(color=colours[idx], zindex=4, label=lines[idx])}) for cat, geoms in rail_geoms_by_category.items(): cat_style = styles[cat] ax.add_geometries( geoms, crs=proj_lat_lon, linewidth=1.5, edgecolor=cat_style.color, facecolor='none', zorder=cat_style.zindex ) legend_from_style_spec(ax, styles, loc=(0.6,0.2)) save_fig(output_file)
if __name__ == '__main__': main()