.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_auto_examples/trip_distribution/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_trip_distribution_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 9-21 .. 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 # We create the example project inside our temp folder fldr = join(gettempdir(), uuid4().hex) project = create_example(fldr, "coquimbo") .. GENERATED FROM PYTHON SOURCE LINES 22-32 .. code-block:: Python import logging import sys # We the project opens, we can tell the logger to direct all messages to the terminal as well 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 33-35 Network Skimming --------------- .. GENERATED FROM PYTHON SOURCE LINES 37-40 .. code-block:: Python from aequilibrae.paths import NetworkSkimming import numpy as np .. GENERATED FROM PYTHON SOURCE LINES 41-42 Let's build all graphs .. GENERATED FROM PYTHON SOURCE LINES 42-46 .. code-block:: Python project.network.build_graphs() # We get warnings that several fields in the project are filled with NaNs. # This is true, but we won't use those fields. .. rst-class:: sphx-glr-script-out .. code-block:: none /opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/site-packages/aequilibrae/project/network/network.py:342: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)` df = pd.read_sql(sql, conn).fillna(value=np.nan) 2024-02-25 08:38:14,168;WARNING ; Field(s) speed, travel_time, capacity, osm_id, lanes has(ve) at least one NaN value. Check your computations 2024-02-25 08:38:14,253;WARNING ; Field(s) speed, travel_time, capacity, osm_id, lanes has(ve) at least one NaN value. Check your computations 2024-02-25 08:38:14,354;WARNING ; Field(s) speed, travel_time, capacity, osm_id, lanes has(ve) at least one NaN value. Check your computations 2024-02-25 08:38:14,455;WARNING ; Field(s) speed, travel_time, capacity, osm_id, lanes has(ve) at least one NaN value. Check your computations .. GENERATED FROM PYTHON SOURCE LINES 47-48 We grab the graph for cars .. GENERATED FROM PYTHON SOURCE LINES 48-62 .. 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)))) .. rst-class:: sphx-glr-script-out .. code-block:: none 2024-02-25 08:38:14,537;WARNING ; Field(s) speed, travel_time, capacity, osm_id, lanes has(ve) at least one NaN value. Check your computations .. GENERATED FROM PYTHON SOURCE LINES 63-64 And run the skimming .. GENERATED FROM PYTHON SOURCE LINES 64-67 .. code-block:: Python skm = NetworkSkimming(graph) skm.execute() .. GENERATED FROM PYTHON SOURCE LINES 68-75 .. code-block:: Python # The result is an AequilibraEMatrix object skims = skm.results.skims # Which we can manipulate directly from its temp file, if we wish skims.matrices[:3, :3, :] .. rst-class:: sphx-glr-script-out .. code-block:: none array([[[ 0. ], [3837.77213321], [5254.43794267]], [[3902.64313666], [ 0. ], [3539.21404763]], [[5162.17692072], [3521.56330163], [ 0. ]]]) .. GENERATED FROM PYTHON SOURCE LINES 76-80 .. code-block:: Python # Or access each matrix, lets just look at the first 3x3 skims.distance[:3, :3] .. rst-class:: sphx-glr-script-out .. code-block:: none array([[ 0. , 3837.77213321, 5254.43794267], [3902.64313666, 0. , 3539.21404763], [5162.17692072, 3521.56330163, 0. ]]) .. GENERATED FROM PYTHON SOURCE LINES 81-91 .. code-block:: Python # We can save it to the project if we want skm.save_to_project("base_skims") # We can also retrieve this skim record to write something to its description 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() .. rst-class:: sphx-glr-script-out .. code-block:: none 2024-02-25 08:38:14,708;WARNING ; Matrix Record has been saved to the database .. GENERATED FROM PYTHON SOURCE LINES 92-93 .. code-block:: Python project.close() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.025 seconds) .. _sphx_glr_download__auto_examples_trip_distribution_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 ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_