.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_auto_examples/public_transport/plot_public_transit_skimming.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_public_transport_plot_public_transit_skimming.py: .. _example_transit_skimming: Public transport assignment with skimming ========================================= In this example, we build on the transit assignment example and add skimming to it. We use data from Coquimbo, a city in La Serena Metropolitan Area in Chile. .. GENERATED FROM PYTHON SOURCE LINES 12-17 .. admonition:: References WE HIGHLY RECOMMEND YOU READ THE DOCUMENTATION ON SKIMMING BEFORE PROCEEDING * :doc:`../../public_transport` .. GENERATED FROM PYTHON SOURCE LINES 19-27 .. seealso:: Several functions, methods, classes and modules are used in this example: * :func:`aequilibrae.transit.Transit` * :func:`aequilibrae.transit.TransitGraphBuilder` * :func:`aequilibrae.paths.TransitClass` * :func:`aequilibrae.paths.TransitAssignment` * :func:`aequilibrae.matrix.AequilibraeMatrix` .. GENERATED FROM PYTHON SOURCE LINES 29-30 Imports for example construction .. GENERATED FROM PYTHON SOURCE LINES 30-44 .. code-block:: Python from os.path import join from tempfile import gettempdir from uuid import uuid4 import numpy as np from aequilibrae.matrix import AequilibraeMatrix from aequilibrae.paths import TransitAssignment, TransitClass from aequilibrae.project.database_connection import database_connection from aequilibrae.transit import Transit from aequilibrae.transit.transit_graph_builder import TransitGraphBuilder from aequilibrae.utils.create_example import create_example .. GENERATED FROM PYTHON SOURCE LINES 46-52 .. code-block:: Python # Let's create an empty project on an arbitrary folder. fldr = join(gettempdir(), uuid4().hex) project = create_example(fldr, "coquimbo") .. GENERATED FROM PYTHON SOURCE LINES 53-54 Let's create our ``Transit`` object. .. GENERATED FROM PYTHON SOURCE LINES 54-56 .. code-block:: Python data = Transit(project) .. GENERATED FROM PYTHON SOURCE LINES 57-65 Graph building -------------- Let's build the transit network. We'll disable ``outer_stop_transfers`` and ``walking_edges`` because Coquimbo doesn't have any parent stations. For the OD connections we'll use the ``overlapping_regions`` method and create some accurate line geometry later. Creating the graph should only take a moment. By default zoning information is pulled from the project network. If you have your own zoning information add it using ``graph.add_zones(zones)`` then ``graph.create_graph()``. .. GENERATED FROM PYTHON SOURCE LINES 65-73 .. code-block:: Python graph = data.create_graph( with_outer_stop_transfers=False, with_walking_edges=False, blocking_centroid_flows=False, connector_method="overlapping_regions" ) .. GENERATED FROM PYTHON SOURCE LINES 74-76 Connector project matching -------------------------- .. GENERATED FROM PYTHON SOURCE LINES 76-89 .. code-block:: Python project.network.build_graphs() graph.create_line_geometry(method="connector project match", graph="c") data.save_graphs() data.load() # Reading back into AequilibraE pt_con = database_connection("transit") graph_db = TransitGraphBuilder.from_db(pt_con, project.network.periods.default_period.period_id) graph_db.vertices.drop(columns="geometry") # To perform an assignment we need to convert the graph builder into a graph. transit_graph = graph_db.to_transit_graph() .. rst-class:: sphx-glr-script-out .. code-block:: none /home/runner/work/aequilibrae/aequilibrae/aequilibrae/paths/graph.py:248: UserWarning: Found centroids not present in the graph! [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133] warnings.warn("Found centroids not present in the graph!\n" + str(centroids[~present_centroids])) /home/runner/work/aequilibrae/aequilibrae/aequilibrae/paths/graph.py:248: UserWarning: Found centroids not present in the graph! [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133] warnings.warn("Found centroids not present in the graph!\n" + str(centroids[~present_centroids])) /home/runner/work/aequilibrae/aequilibrae/aequilibrae/transit/transit_graph_builder.py:1191: UserWarning: In its current implementation, the "connector project match" method may take a while for large networks. warnings.warn( /home/runner/work/aequilibrae/aequilibrae/aequilibrae/paths/graph.py:248: UserWarning: Found centroids not present in the graph! [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 21 22 23 24 25 26 30 31 32 34 35 36 38 41 42 43 44 45 46 51 52 53 54 55 56 61 62 63 64 65 66 67 72 73 77 78 79 80 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 109 110 111 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133] warnings.warn("Found centroids not present in the graph!\n" + str(centroids[~present_centroids])) /home/runner/work/aequilibrae/aequilibrae/aequilibrae/paths/graph.py:248: UserWarning: Found centroids not present in the graph! [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 21 22 23 24 25 26 30 31 32 34 35 36 38 41 42 43 44 45 46 51 52 53 54 55 56 61 62 63 64 65 66 67 72 73 77 78 79 80 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 109 110 111 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133] warnings.warn("Found centroids not present in the graph!\n" + str(centroids[~present_centroids])) .. GENERATED FROM PYTHON SOURCE LINES 90-99 .. code-block:: Python # Mock demand matrix zones = len(transit_graph.centroids) mat = AequilibraeMatrix() mat.create_empty(zones=zones, matrix_names=['pt'], memory_only=True) mat.index = transit_graph.centroids[:] mat.matrices[:, :, 0] = np.full((zones, zones), 1.0) mat.computational_view() .. GENERATED FROM PYTHON SOURCE LINES 100-103 Hyperpath generation/assignment ------------------------------- We'll create a ``TransitAssignment`` object as well as a ``TransitClass``. .. GENERATED FROM PYTHON SOURCE LINES 105-126 .. code-block:: Python # Create the assignment class assigclass = TransitClass(name="pt", graph=transit_graph, matrix=mat) assig = TransitAssignment() assig.add_class(assigclass) # Set assignment assig.set_time_field("trav_time") assig.set_frequency_field("freq") assig.set_skimming_fields(["trav_time", "boardings", "freq"]) assig.set_algorithm("os") assigclass.set_demand_matrix_core("pt") # Perform the assignment for the transit classes added assig.execute() # We can use the get_skim_results() method to retrieve the skims assig.get_skim_results()["pt"].matrix["boardings"].sum() .. rst-class:: sphx-glr-script-out .. code-block:: none 898.0 .. GENERATED FROM PYTHON SOURCE LINES 127-130 Saving results -------------- We'll be saving the skimming results. .. GENERATED FROM PYTHON SOURCE LINES 130-132 .. code-block:: Python assig.save_results(table_name='hyperpath example') .. GENERATED FROM PYTHON SOURCE LINES 133-134 Wrapping up .. GENERATED FROM PYTHON SOURCE LINES 134-135 .. code-block:: Python project.close() .. rst-class:: sphx-glr-script-out .. code-block:: none This project at /tmp/a29b98562aec4cf6a91c89d23f2e4f8e is already closed .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 5.345 seconds) .. _sphx_glr_download__auto_examples_public_transport_plot_public_transit_skimming.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_public_transit_skimming.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_public_transit_skimming.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_public_transit_skimming.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_