首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pgrouting路由方法不提供最短路径

pgrouting路由方法不提供最短路径
EN

Stack Overflow用户
提问于 2021-10-22 14:43:08
回答 1查看 61关注 0票数 0

首先,我对路由总体来说是个新手,需要在我的学士论文中使用它,所以我学习它的时间非常有限。如果有更多的信息我可以提供,以找到问题,或者如果你只是有一个想法,请告诉我。谢谢!

我对postgis扩展pgrouting提供的路由方法有一个问题,在这些方法中,结果远远不是最短路径。

我使用了一个包含postgis的docker容器,扩展名为pgrouting:https://hub.docker.com/r/pgrouting/pgrouting/

我的图是在Geofabrik.de的"Niedersachsen“地图上用osm2po创建的。

我只是按照osm2po快速入门提供的教程创建了一个图形,并将其放入我的数据库中。

My Table构建为:

代码语言:javascript
复制
CREATE TABLE hh_2po_4pgr(id integer, osm_id bigint, osm_name character varying, osm_meta character varying, osm_source_id bigint, osm_target_id bigint, clazz integer, flags integer, source integer, target integer, km double precision, kmh integer, cost double precision, reverse_cost double precision, x1 double precision, y1 double precision, x2 double precision, y2 double precision);
SELECT AddGeometryColumn('hh_2po_4pgr', 'geom_way', 4326, 'LINESTRING', 2);

我配置的唯一一件事就是将cost和reverse_cost设置为距离。但如果没有这种改变,问题就会保持不变。我也做了pgr_anaalyzeGraph,它给我返回了一个OK,这通常表明这个图应该配置得很好。

当我现在启动一个这样的查询时:

代码语言:javascript
复制
SELECT * FROM pgr_astar('SELECT id, source, target, cost, x1, y1, x2, y2 FROM hh_2po_4pgr', 232516, 213104, FALSE, 2);

它给了我看似随机的路线,要么是空的,要么是太长的。我测试的身份证都离得很近,而且都通过街道相连。在这种情况下,它应该是一条几百米长的路线,但我得到了一条超过1000个路段和近100公里的路线。

注意:我还尝试了其他函数,比如pgr_djjkstra。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-26 12:13:06

解决方案:

代码语言:javascript
复制
SELECT source FROM hh_2po_4pgr ORDER BY geom_way <-> ST_SetSRID(ST_Point(:pointX, :pointY),4326);

SELECT target FROM hh_2po_4pgr ORDER BY geom_way <-> ST_SetSRID(ST_Point(:pointX, :pointY),4326);

使用这些SELECT语句来获取正确的Id,以便在pgrouting函数中使用。

如果任何人有关于pgrouting的问题,请联系我。如果我查看我的Stackoverflow消息,我会尝试帮助您。看起来文档和教程有点让人恼火。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69678843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档