
.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "_auto_examples/visualization/plot_delaunay_lines.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download__auto_examples_visualization_plot_delaunay_lines.py>`
        to download the full example code.

.. rst-class:: sphx-glr-example-title

.. _sphx_glr__auto_examples_visualization_plot_delaunay_lines.py:


.. _creating_delaunay_lines:

Creating Delaunay Lines
=======================

In this example, we show how to create AequilibraE's famous Delaunay Lines, but in Python.

For more on this topic, see its `first publication <https://xl-optim.com/delaunay/>`_.

We use the Sioux Falls example once again.

.. GENERATED FROM PYTHON SOURCE LINES 14-18

.. seealso::
    Several functions, methods, classes and modules are used in this example:

    * :func:`aequilibrae.utils.create_delaunay_network.DelaunayAnalysis`

.. GENERATED FROM PYTHON SOURCE LINES 20-33

.. code-block:: Python


    # Imports
    import pandas as pd
    from uuid import uuid4
    from os.path import join
    import sqlite3
    from tempfile import gettempdir
    import matplotlib.pyplot as plt
    import shapely.wkb

    from aequilibrae.utils.create_example import create_example
    from aequilibrae.utils.create_delaunay_network import DelaunayAnalysis








.. GENERATED FROM PYTHON SOURCE LINES 34-40

.. code-block:: Python


    # We create an empty project on an arbitrary folder
    fldr = join(gettempdir(), uuid4().hex)

    project = create_example(fldr)








.. GENERATED FROM PYTHON SOURCE LINES 41-42

Get the Delaunay Lines generation class

.. GENERATED FROM PYTHON SOURCE LINES 42-47

.. code-block:: Python

    da = DelaunayAnalysis(project)

    # Let's create the triangulation based on the zones, but we could create based on the network (centroids) too
    da.create_network("zones")








.. GENERATED FROM PYTHON SOURCE LINES 48-49

Now we get the matrix we want and create the Delaunay Lines

.. GENERATED FROM PYTHON SOURCE LINES 49-52

.. code-block:: Python

    demand = project.matrices.get_matrix("demand_omx")
    demand.computational_view(["matrix"])








.. GENERATED FROM PYTHON SOURCE LINES 53-54

And we will call it 'delaunay_test'./ It will also be saved in the results_database.sqlite

.. GENERATED FROM PYTHON SOURCE LINES 54-56

.. code-block:: Python

    da.assign_matrix(demand, "delaunay_test")





.. rst-class:: sphx-glr-script-out

 .. code-block:: none


    delaunay                                          :   0%|          | 0/24 [00:00<?, ?it/s]
    Equilibrium Assignment                            :   0%|          | 0/250 [00:00<?, ?it/s]
    All-or-Nothing - Traffic Class: delaunay          :   0%|          | 1/250 [00:00<00:00, 39568.91it/s]
    All-or-Nothing - Traffic Class: delaunay          :   0%|          | 1/250 [00:00<00:00, 7231.56it/s] 
    All-or-Nothing - Traffic Class: delaunay          :   0%|          | 0/250 [00:00<?, ?it/s]          
    All-or-Nothing - Traffic Class: delaunay - Zones: 0/24:   0%|          | 0/250 [00:00<?, ?it/s]
    All-or-Nothing - Traffic Class: delaunay - Zones: 10/24:   0%|          | 0/250 [00:00<?, ?it/s]
    All-or-Nothing - Traffic Class: delaunay - Zones: 20/24:   0%|          | 0/250 [00:00<?, ?it/s]
    All-or-Nothing - Traffic Class: delaunay - Zones: 24/24:   0%|          | 0/250 [00:00<?, ?it/s]
                                                                                                



.. GENERATED FROM PYTHON SOURCE LINES 57-58

we retrieve the results

.. GENERATED FROM PYTHON SOURCE LINES 58-61

.. code-block:: Python

    conn = sqlite3.connect(join(fldr, "results_database.sqlite"))
    results = pd.read_sql("Select * from delaunay_test", conn).set_index("link_id")








.. GENERATED FROM PYTHON SOURCE LINES 62-63

Now we get the matrix we want and create the Delaunay Lines

.. GENERATED FROM PYTHON SOURCE LINES 63-76

.. code-block:: Python

    links = pd.read_sql("Select link_id, st_asBinary(geometry) geometry from delaunay_network", project.conn)
    links.geometry = links.geometry.apply(shapely.wkb.loads)
    links.set_index("link_id", inplace=True)

    df = links.join(results)

    max_vol = df.matrix_tot.max()

    for idx, lnk in df.iterrows():
        geo = lnk.geometry
        plt.plot(*geo.xy, color="blue", linewidth=4 * lnk.matrix_tot / max_vol)
    plt.show()




.. image-sg:: /_auto_examples/visualization/images/sphx_glr_plot_delaunay_lines_001.png
   :alt: plot delaunay lines
   :srcset: /_auto_examples/visualization/images/sphx_glr_plot_delaunay_lines_001.png
   :class: sphx-glr-single-img





.. GENERATED FROM PYTHON SOURCE LINES 77-78

Close the project

.. GENERATED FROM PYTHON SOURCE LINES 78-79

.. code-block:: Python

    project.close()








.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 0.445 seconds)


.. _sphx_glr_download__auto_examples_visualization_plot_delaunay_lines.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_delaunay_lines.ipynb <plot_delaunay_lines.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_delaunay_lines.py <plot_delaunay_lines.py>`

    .. container:: sphx-glr-download sphx-glr-download-zip

      :download:`Download zipped: plot_delaunay_lines.zip <plot_delaunay_lines.zip>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
