Importing and exporting the network =================================== Currently AequilibraE can import links and nodes from a network from OpenStreetMaps, GMNS, and from link layers. AequilibraE can also export the existing network into GMNS format. There is some valuable information on these topics in the following sections. .. _importing_from_osm: Importing from OpenStreetMap ---------------------------- You can check more specifications on OSM download on the :ref:`parameters_file`. .. note:: All links that cannot be imported due to errors in the SQL insert statements are written to the log file with error message AND the SQL statement itself, and therefore errors in import can be analyzed for re-downloading or fixed by re-running the failed SQL statements after manual fixing. Python limitations ~~~~~~~~~~~~~~~~~~ As it happens in other cases, Python's usual implementation of SQLite is incomplete, and does not include R-Tree, a key extension used by SpatiaLite for GIS operations. If you want to learn a little more about this topic, you can access this `blog post `_ or check out the SQLite page on `R-Tree `_. This limitation issue is solved when installing SpatiaLite, as shown in :ref:`the dependencies page `. Please also note that AequilibraE's network consistency triggers **will NOT work** before spatial indices have been created and/or if the editing is being done on a platform that does not support both R-Tree and SpatiaLite. .. seealso:: * :func:`aequilibrae.project.Network.create_from_osm` Function documentation * :ref:`plot_from_osm` Usage example Importing from link layer ------------------------- It is possible to create an AequilibraE project from a link layer, such as a \*.csv file that contains geometry in WKT, for instance. You can check an example with all functions used in :ref:`the following example `. .. _importing_from_gmns_file: Importing from files in GMNS format ----------------------------------- Before importing a network from a source in GMNS format, it is imperative to know in which spatial reference its geometries (links and nodes) were created. If the SRID is different than 4326, it must be passed as an input using the argument ``srid``. .. image:: ../_images/plot_import_from_gmns.png :align: center :alt: example :target: _auto_examples/plot_import_from_gmns.html It is possible to import the following files from a GMNS source: * link table; * node table; * use_group table; * geometry table. You can find the specification for all these tables in the GMNS documentation, `here `_. By default, the method ``create_from_gmns()`` read all required and optional fields specified in the GMNS link and node tables specification. If you need it to read any additional fields as well, you have to modify the AequilibraE parameters as shown in the :ref:`example `. When adding a new field to be read in the parameters.yml file, it is important to keep the "required" key set to False, since you will always be adding a non-required field. Required fields for a specific table are only those defined in the GMNS specification. .. note:: In the AequilibraE nodes table, if a node is to be identified as a centroid, its 'is_centroid' field has to be set to 1. However, this is not part of the GMNS specification. Thus, if you want a node to be identified as a centroid during the import process, in the GMNS node table you have to set the field 'node_type' equals to 'centroid'. .. seealso:: * :func:`aequilibrae.project.Network.create_from_gmns` Function documentation * :ref:`import_from_gmns` Usage example .. _aequilibrae_to_gmns: Exporting AequilibraE model to GMNS format ------------------------------------------ After loading an existing AequilibraE project, you can export it to GMNS format. .. image:: ../_images/plot_export_to_gmns.png :align: center :alt: example :target: export_to_gmns It is possible to export an AequilibraE network to the following tables in GMNS format: * link table * node table * use_definition table This list does not include the optional 'use_group' table, which is an optional argument of the GMNS function, because mode groups are not used in the AequilibraE modes table. In addition to all GMNS required fields for each of the three exported tables, some other fields are also added as reminder of where the features came from when looking back at the AequilibraE project. .. note:: When a node is identified as a centroid in the AequilibraE nodes table, this information is transmitted to the GMNS node table by means of the field 'node_type', which is set to 'centroid' in this case. The 'node_type' field is an optinal field listed in the GMNS node table specification. You can find the GMNS specification `here `_. .. seealso:: * :func:`aequilibrae.project.Network.export_to_gmns` Function documentation * :ref:`export_to_gmns` Usage example