.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_auto_examples/path_computation/plot_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_path_computation_plot_skimming.py: .. _example_usage_skimming: Network skimming ================ In this example, we show how to perform network skimming for Coquimbo, a city in La Serena Metropolitan Area in Chile. .. GENERATED FROM PYTHON SOURCE LINES 27-32 .. seealso:: Several functions, methods, classes and modules are used in this example: * :func:`aequilibrae.paths.graph` * :func:`aequilibrae.paths.network_skimming` .. GENERATED FROM PYTHON SOURCE LINES 34-41 .. code-block:: Python # Imports from uuid import uuid4 from tempfile import gettempdir from os.path import join from aequilibrae.utils.create_example import create_example .. GENERATED FROM PYTHON SOURCE LINES 43-49 .. code-block:: Python # We create the example project inside our temp folder fldr = join(gettempdir(), uuid4().hex) project = create_example(fldr, "coquimbo") .. GENERATED FROM PYTHON SOURCE LINES 50-53 .. code-block:: Python import logging import sys .. GENERATED FROM PYTHON SOURCE LINES 54-55 When the project opens, we can tell the logger to direct all messages to the terminal as well .. GENERATED FROM PYTHON SOURCE LINES 55-61 .. code-block:: Python logger = project.logger stdout_handler = logging.StreamHandler(sys.stdout) formatter = logging.Formatter("%(asctime)s;%(levelname)s ; %(message)s") stdout_handler.setFormatter(formatter) logger.addHandler(stdout_handler) .. GENERATED FROM PYTHON SOURCE LINES 62-64 Network Skimming ---------------- .. GENERATED FROM PYTHON SOURCE LINES 66-68 .. code-block:: Python import numpy as np .. GENERATED FROM PYTHON SOURCE LINES 69-70 Let's build all graphs .. GENERATED FROM PYTHON SOURCE LINES 70-74 .. code-block:: Python project.network.build_graphs() # We get warnings that several fields in the project are filled with ``NaN``s. # This is true, but we won't use those fields. .. GENERATED FROM PYTHON SOURCE LINES 75-76 We grab the graph for cars .. GENERATED FROM PYTHON SOURCE LINES 76-92 .. code-block:: Python graph = project.network.graphs["c"] # we also see what graphs are available project.network.graphs.keys() # let's say we want to minimize the distance graph.set_graph("distance") # And will skim distance while we are at it, other fields like ``free_flow_time`` or ``travel_time`` # can be added here as well graph.set_skimming(["distance"]) # But let's say we only want a skim matrix for nodes 28-40, and 49-60 (inclusive), # these happen to be a selection of western centroids. graph.prepare_graph(np.array(list(range(28, 41)) + list(range(49, 91)))) .. GENERATED FROM PYTHON SOURCE LINES 93-94 And run the skimming .. GENERATED FROM PYTHON SOURCE LINES 94-96 .. code-block:: Python skm = graph.compute_skims() .. GENERATED FROM PYTHON SOURCE LINES 97-99 Building network skims directly from the graph is more straightforward, though we could alternatively use the class ``NetworkSkimming`` to achieve the same result. .. GENERATED FROM PYTHON SOURCE LINES 99-105 .. code-block:: Python # from aequilibrae.paths import NetworkSkimming # skm = NetworkSkimming(graph) # skm.execute() .. GENERATED FROM PYTHON SOURCE LINES 106-107 The result is an AequilibraEMatrix object .. GENERATED FROM PYTHON SOURCE LINES 107-112 .. code-block:: Python skims = skm.results.skims # Which we can manipulate directly from its temp file, if we wish skims.matrices[:3, :3, :] .. GENERATED FROM PYTHON SOURCE LINES 113-114 Or access each matrix, lets just look at the first 3x3 .. GENERATED FROM PYTHON SOURCE LINES 114-116 .. code-block:: Python skims.distance[:3, :3] .. GENERATED FROM PYTHON SOURCE LINES 117-118 We can save it to the project if we want .. GENERATED FROM PYTHON SOURCE LINES 118-120 .. code-block:: Python skm.save_to_project("base_skims") .. GENERATED FROM PYTHON SOURCE LINES 121-122 We can also retrieve this skim record to write something to its description .. GENERATED FROM PYTHON SOURCE LINES 122-127 .. code-block:: Python matrices = project.matrices mat_record = matrices.get_record("base_skims") mat_record.description = "minimized distance while also skimming distance for just a few nodes" mat_record.save() .. GENERATED FROM PYTHON SOURCE LINES 128-129 .. code-block:: Python project.close() .. _sphx_glr_download__auto_examples_path_computation_plot_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_skimming.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_skimming.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_skimming.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_