.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_auto_examples/creating_models/plot_create_from_gmns.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_create_from_gmns.py: .. _import_from_gmns: Create project from GMNS ======================== In this example, we import a simple network in GMNS format. The source files of this network are publicly available in the `GMNS GitHub repository `_ itself. .. GENERATED FROM PYTHON SOURCE LINES 29-32 .. admonition:: References * :ref:`importing_from_gmns_file` .. GENERATED FROM PYTHON SOURCE LINES 34-38 .. seealso:: Several functions, methods, classes and modules are used in this example: * :func:`aequilibrae.project.Network.create_from_gmns` .. GENERATED FROM PYTHON SOURCE LINES 40-49 .. code-block:: Python # Imports from uuid import uuid4 from os.path import join from tempfile import gettempdir from aequilibrae.project import Project from aequilibrae.parameters import Parameters import folium .. GENERATED FROM PYTHON SOURCE LINES 51-57 .. code-block:: Python # We load the example file from the GMNS GitHub repository link_file = "https://raw.githubusercontent.com/zephyr-data-specs/GMNS/main/examples/Arlington_Signals/link.csv" node_file = "https://raw.githubusercontent.com/zephyr-data-specs/GMNS/main/examples/Arlington_Signals/node.csv" use_group_file = "https://raw.githubusercontent.com/zephyr-data-specs/GMNS/main/examples/Arlington_Signals/use_group.csv" .. GENERATED FROM PYTHON SOURCE LINES 58-65 .. code-block:: Python # We create the example project inside our temp folder fldr = join(gettempdir(), uuid4().hex) project = Project() project.new(fldr) .. rst-class:: sphx-glr-script-out .. code-block:: none No pre-existing parameter file exists for this project. Will use default No pre-existing parameter file exists for this project. Will use default .. GENERATED FROM PYTHON SOURCE LINES 66-69 In this cell, we modify the AequilibraE parameters.yml file so it contains additional fields to be read in the GMNS link and/or node tables. Remember to always keep the "required" key set to False, since we are adding a non-required field. .. GENERATED FROM PYTHON SOURCE LINES 69-83 .. code-block:: Python new_link_fields = { "bridge": {"description": "bridge flag", "type": "text", "required": False}, "tunnel": {"description": "tunnel flag", "type": "text", "required": False}, } new_node_fields = { "port": {"description": "port flag", "type": "text", "required": False}, "hospital": {"description": "hospital flag", "type": "text", "required": False}, } par = Parameters() par.parameters["network"]["gmns"]["link"]["fields"].update(new_link_fields) par.parameters["network"]["gmns"]["node"]["fields"].update(new_node_fields) par.write_back() .. GENERATED FROM PYTHON SOURCE LINES 84-87 As it is specified that the geometries are in the coordinate system EPSG:32619, which is different than the system supported by AequilibraE (EPSG:4326), we inform the srid in the method call: .. GENERATED FROM PYTHON SOURCE LINES 87-91 .. code-block:: Python project.network.create_from_gmns( link_file_path=link_file, node_file_path=node_file, use_group_path=use_group_file, srid=32619 ) .. rst-class:: sphx-glr-script-out .. code-block:: none Fields not imported from node table: wkt_coord. If you want them to be imported, please modify the parameters.yml file. .. GENERATED FROM PYTHON SOURCE LINES 92-95 Now, let's plot a map. This map can be compared with the images of the README.md file located in this example repository on GitHub: https://github.com/zephyr-data-specs/GMNS/blob/develop/examples/Arlington_Signals/README.md .. GENERATED FROM PYTHON SOURCE LINES 95-98 .. code-block:: Python links = project.network.links.data nodes = project.network.nodes.data .. GENERATED FROM PYTHON SOURCE LINES 99-100 We create our Folium layers .. GENERATED FROM PYTHON SOURCE LINES 100-104 .. code-block:: Python network_links = folium.FeatureGroup("links") network_nodes = folium.FeatureGroup("nodes") layers = [network_links, network_nodes] .. GENERATED FROM PYTHON SOURCE LINES 105-107 We do some Python magic to transform this dataset into the format required by Folium We are only getting link_id and link_type into the map, but we could get other pieces of info as well .. GENERATED FROM PYTHON SOURCE LINES 107-117 .. code-block:: Python for i, row in links.iterrows(): points = row.geometry.wkt.replace("LINESTRING ", "").replace("(", "").replace(")", "").split(", ") points = "[[" + "],[".join([p.replace(" ", ", ") for p in points]) + "]]" # we need to take from x/y to lat/long points = [[x[1], x[0]] for x in eval(points)] _ = folium.vector_layers.PolyLine( points, popup=f"link_id: {row.link_id}", tooltip=f"{row.modes}", color="black", weight=2 ).add_to(network_links) .. GENERATED FROM PYTHON SOURCE LINES 118-119 And now we get the nodes .. GENERATED FROM PYTHON SOURCE LINES 119-134 .. code-block:: Python for i, row in nodes.iterrows(): point = (row.geometry.y, row.geometry.x) _ = folium.vector_layers.CircleMarker( point, popup=f"link_id: {row.node_id}", tooltip=f"{row.modes}", color="red", radius=5, fill=True, fillColor="red", fillOpacity=1.0, ).add_to(network_nodes) .. GENERATED FROM PYTHON SOURCE LINES 135-136 We get the center of the region .. GENERATED FROM PYTHON SOURCE LINES 136-140 .. code-block:: Python curr = project.conn.cursor() curr.execute("select avg(xmin), avg(ymin) from idx_links_geometry") long, lat = curr.fetchone() .. GENERATED FROM PYTHON SOURCE LINES 141-153 .. code-block:: Python # We create the map map_gmns = folium.Map(location=[lat, long], zoom_start=17) # Add all layers for layer in layers: layer.add_to(map_gmns) # And Add layer control before we display it folium.LayerControl().add_to(map_gmns) map_gmns .. raw:: html
Make this Notebook Trusted to load map: File -> Trust Notebook


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