.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "_auto_examples/creating_models/from_osm.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_from_osm.py: .. _plot_from_osm: Project from OpenStreetMap ============================= In this example, we show how to create an empty project and populate it with a network from OpenStreetMap. This time we will use Folium to visualize the network. .. GENERATED FROM PYTHON SOURCE LINES 13-14 Imports .. GENERATED FROM PYTHON SOURCE LINES 14-20 .. code-block:: Python from uuid import uuid4 from tempfile import gettempdir from os.path import join from aequilibrae import Project import folium .. GENERATED FROM PYTHON SOURCE LINES 22-23 We create an empty project on an arbitrary folder .. GENERATED FROM PYTHON SOURCE LINES 23-26 .. code-block:: Python fldr = join(gettempdir(), uuid4().hex) project = Project() project.new(fldr) .. GENERATED FROM PYTHON SOURCE LINES 27-29 Now we can download the network from any place in the world (as long as you have memory for all the download and data wrangling that will be done) .. GENERATED FROM PYTHON SOURCE LINES 29-38 .. code-block:: Python # We can create from a bounding box or a named place. # For the sake of this example, we will choose the small nation of Nauru. project.network.create_from_osm(place_name="Nauru") # We can also choose to create a model from a polygon (which must be in EPSG:4326) # Or from a Polygon defined by a bounding box, for example # project.network.create_from_osm(model_area=box(-112.185, 36.59, -112.179, 36.60)) .. GENERATED FROM PYTHON SOURCE LINES 39-40 We grab all the links data as a Pandas DataFrame so we can process it easier .. GENERATED FROM PYTHON SOURCE LINES 40-57 .. code-block:: Python links = project.network.links.data # We create a Folium layer network_links = folium.FeatureGroup("links") # 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 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)] line = folium.vector_layers.PolyLine( points, popup=f"link_id: {row.link_id}", tooltip=f"{row.link_type}", color="blue", weight=10 ).add_to(network_links) .. GENERATED FROM PYTHON SOURCE LINES 58-59 We get the center of the region we are working with some SQL magic .. GENERATED FROM PYTHON SOURCE LINES 59-63 .. 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 64-69 .. code-block:: Python map_osm = folium.Map(location=[lat, long], zoom_start=14) network_links.add_to(map_osm) folium.LayerControl().add_to(map_osm) map_osm .. GENERATED FROM PYTHON SOURCE LINES 70-71 .. code-block:: Python project.close() .. _sphx_glr_download__auto_examples_creating_models_from_osm.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: from_osm.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: from_osm.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_