.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_auto_examples/creating_models/plot_import_gtfs.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr__auto_examples_creating_models_plot_import_gtfs.py: .. _example_gtfs: Import GTFS =========== In this example, we import a GTFS feed to our model and perform map matching. We use data from Coquimbo, a city in La Serena Metropolitan Area in Chile. .. GENERATED FROM PYTHON SOURCE LINES 12-13 Imports .. GENERATED FROM PYTHON SOURCE LINES 13-25 .. code-block:: Python from uuid import uuid4 from os import remove from os.path import join from tempfile import gettempdir import folium import pandas as pd from aequilibrae.project.database_connection import database_connection from aequilibrae.transit import Transit from aequilibrae.utils.create_example import create_example .. GENERATED FROM PYTHON SOURCE LINES 27-28 Let's create an empty project on an arbitrary folder. .. GENERATED FROM PYTHON SOURCE LINES 28-32 .. code-block:: Python fldr = join(gettempdir(), uuid4().hex) project = create_example(fldr, "coquimbo") .. GENERATED FROM PYTHON SOURCE LINES 33-35 As the Coquimbo example already has a complete GTFS model, we shall remove its public transport database for the sake of this example. .. GENERATED FROM PYTHON SOURCE LINES 35-38 .. code-block:: Python remove(join(fldr, "public_transport.sqlite")) .. GENERATED FROM PYTHON SOURCE LINES 39-40 Let's import the GTFS feed. .. GENERATED FROM PYTHON SOURCE LINES 40-43 .. code-block:: Python dest_path = join(fldr, "gtfs_coquimbo.zip") .. GENERATED FROM PYTHON SOURCE LINES 44-46 Now we create our Transit object and import the GTFS feed into our model. This will automatically create a new public transport database. .. GENERATED FROM PYTHON SOURCE LINES 46-51 .. code-block:: Python data = Transit(project) transit = data.new_gtfs_builder(agency="LISANCO", file_path=dest_path) .. GENERATED FROM PYTHON SOURCE LINES 52-55 To load the data, we must choose one date. We're going to continue with 2016-04-13 but feel free to experiment with any other available dates. Transit class has a function allowing you to check dates for the GTFS feed. It should take approximately 2 minutes to load the data. .. GENERATED FROM PYTHON SOURCE LINES 55-58 .. code-block:: Python transit.load_date("2016-04-13") .. GENERATED FROM PYTHON SOURCE LINES 59-61 Now we execute the map matching to find the real paths. Depending on the GTFS size, this process can be really time-consuming. .. GENERATED FROM PYTHON SOURCE LINES 61-65 .. code-block:: Python transit.set_allow_map_match(True) transit.map_match() .. GENERATED FROM PYTHON SOURCE LINES 66-67 Finally, we save our GTFS into our model. .. GENERATED FROM PYTHON SOURCE LINES 67-69 .. code-block:: Python transit.save_to_disk() .. GENERATED FROM PYTHON SOURCE LINES 70-71 Now we will plot one of the route's patterns we just imported .. GENERATED FROM PYTHON SOURCE LINES 71-79 .. code-block:: Python conn = database_connection("transit") links = pd.read_sql( "SELECT pattern_id, ST_AsText(geometry) geom FROM routes WHERE geom IS NOT NULL AND pattern_id == 10001003000;", con=conn) stops = pd.read_sql("""SELECT stop_id, ST_X(geometry) X, ST_Y(geometry) Y FROM stops""", con=conn) .. GENERATED FROM PYTHON SOURCE LINES 80-107 .. code-block:: Python gtfs_links = folium.FeatureGroup("links") gtfs_stops = folium.FeatureGroup("stops") layers = [gtfs_links, gtfs_stops] for i, row in links.iterrows(): points = row.geom.replace("MULTILINESTRING", "").replace("(", "").replace(")", "").split(", ") points = "[[" + "],[".join([p.replace(" ", ", ") for p in points]) + "]]" points = [[x[1], x[0]] for x in eval(points)] _ = folium.vector_layers.PolyLine(points, popup=f"link_id: {row.pattern_id}", color="red", weight=2).add_to( gtfs_links ) for i, row in stops.iterrows(): point = (row.Y, row.X) _ = folium.vector_layers.CircleMarker( point, popup=f"link_id: {row.stop_id}", color="black", radius=3, fill=True, fillColor="black", fillOpacity=1.0, ).add_to(gtfs_stops) .. GENERATED FROM PYTHON SOURCE LINES 108-109 We create the map .. GENERATED FROM PYTHON SOURCE LINES 109-119 .. code-block:: Python map_osm = folium.Map(location=[-29.9633719, -71.3242825], zoom_start=13) # add all layers for layer in layers: layer.add_to(map_osm) # And Add layer control before we display it folium.LayerControl().add_to(map_osm) map_osm .. raw:: html
Make this Notebook Trusted to load map: File -> Trust Notebook


.. GENERATED FROM PYTHON SOURCE LINES 120-121 .. code-block:: Python project.close() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 42.427 seconds) .. _sphx_glr_download__auto_examples_creating_models_plot_import_gtfs.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_import_gtfs.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_import_gtfs.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_