目录
本教程使用了多个FOSS4G工具,大多数FOSS4G软件都与其他开放源代码项目相关,这里就不一一列出来了。
一、pgRouting概览
pgRouting扩展了PostGIS/PostgreSQL地理空间数据库,以提供地理空间路由功能。
数据库路由方法的优点是:
- 数据和属性可以由许多客户机修改,比如QGIS和uDig可以通过JDBC、ODBC进行修改,或者直接使用Pl/pgSQL进行修改。客户端可以是PC,也可以是移动设备。
- 数据更改可以通过路由引擎即时反映,不需要预先计算。
- 可以通过SQL动态计算"cost"参数,其值可以来自多个字段或表。
pgRouting库包含以下核心功能:
- Dijkstra算法
- 约翰逊算法(Johnson's Algorithm)
- 弗洛伊德-沃沙尔算法(Floyd-Warshall Algorithm)
- A*算法
- 双向算法*双向Dijkstra*双向A*(Bi-directional Algorithms*Bi-directional Dijkstra*Bi-directional A*)
- 旅行商(Traveling Sales Person)
- Driving Distance
- 转弯限制最短路径(TRSP)
- 更多!
pgRouting是开放源代码的,在GPLv2许可下提供,受Georepublic、iMaptools和广大用户社区的支持和维护。
pgRouting是OSGeo Foundation的OSGeo Community Projects项目,包含在OSGeoLive中。
OSGeoLive: https://live.osgeo.org/en/overview/pgrouting_overview.html
二、osm2pgrouting概览
osm2pgrouting是一个命令行工具,用于将OpenStreetMap数据导入pgRouting数据库。它会自动构建路由网络拓扑,并为要素类型和道路类别创建表。osm2pgrouting主要是由Daniel Wendt编写,现在托管在pgRouting项目站点上。
基于GPLv2许可,可以使用osm2pgrouting。
维基:https://github.com/pgRouting/osm2pgrouting/wiki
三、OpenStreetMap概览
"OpenStreetMap是一个旨在创建并向任何需要的人提供免费地理数据(如街道地图)的项目,启动该项目的目的是因为大多数你认为免费的地图在使用时实际上都有法律或技术的限制,阻碍了人们以创造性、生产性或奇特的方式使用它们。"
(来源: http://wiki.openstreetmap.org/index.php/Press)
对于pgRouting来说,OpenStreetMap是一个丰富的数据源,因为在处理数据方面没有技术限制。各国的数据可获取性仍然不尽相同,但是世界范围的覆盖性正在日益改善。
OpenStreetMap使用拓扑数据结构:
- 节点(Nodes)是具有地理位置的点。
- 道路(Ways)是节点的序列,被表示为折线(Poly Line)或者多边形
- 关系是指可以被赋予为确定属性的一组节点、道路和其他地理要素之间的关系
- 属性可以指定给节点、道路或者关系并由name=value对组成
OpenStreetMap网站:http://www.openstreetmap.org