This workshop use several free and open source software for geospatial tools. Most of the free and open source software for geospatial tools are related to other open source software projects and it would not be feasible to list all of them.
pgRouting extends the PostGIS / PostgreSQL geospatial database to provide geospatial routing functionality.
Advantages of the database routing approach are:
Data and attributes can be modified by many clients, like QGIS or by directly using PL/pgSQL. The clients can either be personal computers or mobile devices.
Data changes can be reflected instantaneously through the routing engine. There is no need for precalculation.
The “cost” parameter can be dynamically calculated through SQL and its value can come from multiple fields or tables.
Some of the pgRouting library core features are:
osm2pgrouting is a command line tool that imports OpenStreetMap data into a pgRouting database. It builds the routing network topology automatically and creates tables for feature types and road classes. osm2pgrouting was primarily written by Daniel Wendt and is now hosted on the pgRouting project site.
osm2pgrouting is available under the GPLv2 license.
“OpenStreetMap (OSM) is dedicated to creating and providing geographic data, such as street maps, worldwide, for free. Most maps considered “free” actually have legal or technical restrictions on their use. These restrictions hold back anyone from using them in creative, productive or unexpected ways, and make every map a silo of data and effort.”
OpenStreetMap is an adequate data source for pgRouting, because it has no technical restrictions in terms of processing the data. Data availability still varies from country to country, but the worldwide coverage is improving day by day.
OpenStreetMap uses a topological data structure:
Nodes are points with a geographic position.
Ways are lists of nodes, representing a polyline or polygon.
Relations are groups of nodes, ways and other relations which can be assigned certain properties.
Properties can be assigned to nodes, ways or relations and consist of
name = valuepairs.