用pgrouting对openstreetmap数据进行路径分析
2017-08-25 15:16
555 查看
1,将道路osm数据增加列字段
ALTER TABLE changsharoad_connected ADD COLUMN source integer;
ALTER TABLE changsharoad_connected ADD COLUMN target integer;
ALTER TABLE changsharoad_connected ADD COLUMN length double precision;
ALTER TABLE changsharoad_connected ADD COLUMN cost double precision;
ALTER TABLE changsharoad_connected ADD COLUMN reverse_cost double precision;
2,创建拓扑及索引
SELECT pgr_createTopology('changsharoad_connected',0.000001, 'geom', 'gid');
create index road_source_idx on changsharoad_connected("source");
create index road_target_idx on changsharoad_connected("target");
3,分析单双向
SELECT pgr_analyzeOneway('changsharoad_connected', ARRAY['', 'B', 'T'], ARRAY['', 'B', 'F'],ARRAY['', 'B', 'F'], ARRAY['', 'B', 'T'])
update changsharoad_connected set length = ST_LengthSpheroid(geom, 'SPHEROID["WGS 84",6378137,298.257223563]');
update changsharoad_connected set cost=length where oneway='B' or oneway='F'
update changsharoad_connected set cost=-length where oneway='T'
update changsharoad_connected set reverse_cost=-length where oneway='F'
update changsharoad_connected set reverse_cost=length where oneway='B' or oneway='T'
4,最短路径分析
drop table if exists dijkstra_res;
SELECT seq, id1 AS node, id2 AS edge, a.cost as cost, geom into dijkstra_res FROM pgr_dijkstra('
SELECT gid AS id,
source::integer,
target::integer,
cost::double precision AS cost,
reverse_cost::double precision AS reverse_cost
FROM changsharoad_connected', 20946, 19758, true, true)a
LEFT JOIN changsharoad_connected b
ON (a.id2 = b.gid) order by seq;
ALTER TABLE changsharoad_connected ADD COLUMN source integer;
ALTER TABLE changsharoad_connected ADD COLUMN target integer;
ALTER TABLE changsharoad_connected ADD COLUMN length double precision;
ALTER TABLE changsharoad_connected ADD COLUMN cost double precision;
ALTER TABLE changsharoad_connected ADD COLUMN reverse_cost double precision;
2,创建拓扑及索引
SELECT pgr_createTopology('changsharoad_connected',0.000001, 'geom', 'gid');
create index road_source_idx on changsharoad_connected("source");
create index road_target_idx on changsharoad_connected("target");
3,分析单双向
SELECT pgr_analyzeOneway('changsharoad_connected', ARRAY['', 'B', 'T'], ARRAY['', 'B', 'F'],ARRAY['', 'B', 'F'], ARRAY['', 'B', 'T'])
update changsharoad_connected set length = ST_LengthSpheroid(geom, 'SPHEROID["WGS 84",6378137,298.257223563]');
update changsharoad_connected set cost=length where oneway='B' or oneway='F'
update changsharoad_connected set cost=-length where oneway='T'
update changsharoad_connected set reverse_cost=-length where oneway='F'
update changsharoad_connected set reverse_cost=length where oneway='B' or oneway='T'
4,最短路径分析
drop table if exists dijkstra_res;
SELECT seq, id1 AS node, id2 AS edge, a.cost as cost, geom into dijkstra_res FROM pgr_dijkstra('
SELECT gid AS id,
source::integer,
target::integer,
cost::double precision AS cost,
reverse_cost::double precision AS reverse_cost
FROM changsharoad_connected', 20946, 19758, true, true)a
LEFT JOIN changsharoad_connected b
ON (a.id2 = b.gid) order by seq;
相关文章推荐
- 利用OpenStreetMap(OSM)数据搭建一个地图服务
- OpenStreetMap地图数据介绍(转)
- 使用1角分高程数据为OpenStreetMap服务器添加海洋等深线
- OpenStreetMap输入地址进行自动定位
- osm 数据格式(openstreet map)与Route --by wangsh
- 使用Nominatim进行openstreetmap地址搜索/解析
- OpenStreetMap输入地址进行自动定位
- 关于OpenStreetMap数据
- OpenStreetMap输入地址进行自动定位
- OpenStreetMap输入地址进行自动定位
- 使用OpenStreetMap下载kml格式矢量图层数据
- Android OpenStreetMap(OSM) 使用 osmbonuspack 进行导航
- 使用pgRouting进行路径分析
- OpenStreetMap输入地址进行自动定位
- OpenStreetMap输入地址进行自动定位
- 将MapInfo数据转换成OpenStreetMap地图的一种尝试(未完全解决问题)
- OpenStreetMap输入地址进行自动定位
- OpenStreetMap输入地址进行自动定位
- osm 数据格式(openstreet map)与Route
- 几种导入osm(openstreetmap)数据的方法