问题标签 [pgrouting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1538 浏览

postgis - 使用 pgrouting 创建一致的拓扑

我正在开发一个需要某些城市的路线信息的应用程序。首先,我下载了一个 openstreetmap 数据文件 (*.osm),然后使用 osm2pgrouting 工具 ( http://workshop.pgrouting.org/chapters/installation.html )将其导入到 postgreSQL 数据库中。在此之后,我有以下表格:

  • 节点:包含简单的位置点
  • 方式:包含涉及一些节点的方式
  • vertices_tmp:存储可用于pgrouting功能的节点,如Djistra、A*...等。

我会使用不在“vertices_tmp”表中的节点来计算节点之间的距离吗?或者我只会对存储在“vertices_tmp”中的节点进行操作?

在方式表中有一个名为“the_geom”的字段,它封装了不同的位置点(节点)。例如:

"MULTILINESTRING((1.5897786 42.5600441,1.5898376 42.5601455,1.589992 42.5605438,1.590095 42.5606795,1.5901782 42.5608026,1.5902238 42.561018,1.5902912 42.5616808,1.5903685 42.561899,1.5904008 42.5620563,1.5903836 42.5624117,1.5904265 42.5627151,1.5904947 42.5628368,1.5905981 42.5629553,1.5906926 42.5631007,1.590802 42.5633238,1.5908604 42.5634883,1.5909501 42.5637139,1.5910869 42.5638755,1.5913053 42.5639639,1.5914994 42.5640237,1.591648 42.5640261,1.5919232 42.5640145,1.5921124 42.5640363,1.5923292 42.5640953,1.592804 42.5643306))"

我可以使用中间节点还是仅使用源/目标节点进行路由?

我的目标是能够在不同的节点或 POI 之间进行路由,这取决于它的舒适标签,不仅是行驶距离,还有步行距离。此外,我需要计算源/目标节点的最短路径。

有什么想法吗?

0 投票
2 回答
716 浏览

routing - 直接从数据库中获取 osm 数据进行 pgrouting

我正在创建一个需要路线查找器的应用程序。

我将 OSM 数据存储在 PostGIS 数据库中,目前这些数据可能由我的应用程序操作,例如可以移动、添加或删除道路。

我正在研究 pgRouting 但它似乎需要 OSM 数据为 .osm 格式或形状文件。

pgRouting 是否可以直接访问我的 OSM 表来构建它的图表?如果没有,还有其他路由系统可以吗?

谢谢

0 投票
1 回答
2431 浏览

sql - pgrouting 中的“关系已存在”错误

我正在使用以下 sql 创建一个表:

然后,尝试用另一个表中的数据填充表:

我收到以下错误:

错误:关系“建筑物”已经存在

***错误** *

错误:关系“建筑物”已经存在 SQL 状态:42P07

知道为什么会这样吗?我是 pgrouting 的新手,并试图弄清楚如何进行。

谢谢!

0 投票
1 回答
765 浏览

postgresql - 带有公交线路和时间表的最短路径

几天以来我一直在寻找解决方案,但找不到解决方法。

我的目标是根据巴士在它们之间的时间找到两个巴士站之间的最短路径。

所以我有公交线路,以及每条线路的时间表。成本由实际公交车站和下一个公交车站之间的时间差表示(以秒为单位)。源和目标是公交车站的ID

问题是:我有一些平行的链接,因为每辆公共汽车每天都有很多次线路,每次都以相同的方式运行。

我尝试过使用 pgrouting 的 shortest_path 函数,但由于并行链接,它多次返回错误的解决方案。

我已经看到了shooting_star,但我认为我不能在没有几何的情况下使用它。

我有 PostGreSQL 9.1.9 和 PostGIS 2.0.1。这是我的数据库提取的示例:

这里的最后一排是与其他线路相同的公交线路(idcourse = 1)但一小时后

这是获取此信息的请求:

0 投票
1 回答
353 浏览

postgresql - Postgresql 扩展:编辑源代码(例如 pgRouting)

如何修改 postgres 扩展的源代码?我正在尝试使用 pgRouting:所以代码在 ../postgresql/9.1/contrib 中,当我保存更改时,没有应用任何内容。我试图重新启动 postgresql 服务,删除并重新创建数据库扩展 - 仍然没有运气。

0 投票
2 回答
1170 浏览

php - 使用 pgrouting 获取路线距离时遇到问题

我从 pgrouting-workshop 文件开始,但我无法使用多种方法获得准确的路线长度。

第一种方法只是将 ajax 调用返回的长度变量加到 pgrouting.php 脚本中。从路由 db 返回的长度似乎是从距离公式中获得的:sqrt((x2-x1)^2 + (y2-y1)^s) 其中 x 坐标是经度,y 坐标是 epsg:4326 中的纬度。由于投影到地球表面时纬度和经度的长度不同,我不确定这个值有什么好处,但我是这个游戏的新手,所以......

由于第一种方法没有提供准确的总距离,因此我决定使用haversine 公式对从ajax 调用返回的每个段的长度进行求和,以计算长度。但是,我将此长度与起点和终点之间的“如乌鸦飞”(ATCF)距离进行了比较,发现该长度小于 ATCF 长度。所以我将这些路线段中的每一个都添加到了openlayers中的一个单独的矢量图层中,发现这些段并没有覆盖整个路线。许多路段丢失,特别是在路线的弯曲部分。

所以然后我想,好吧,我将通过获取一个片段的开头和前一个片段的结尾之间的距离来总结这些差距。但是,我发现这些段并没有按顺序返回。

我受阻了。如何使用 pgrouting 获得准确的路线长度?以下是我使用的 html 和 php 脚本:

路由-final05.html:

pgrouting.php(我没有在这里更改任何内容,这是直接来自车间文件)

0 投票
1 回答
202 浏览

gis - Pgrouting functions and geoms type not found

I have installed a postgresql 9.1 and postgis 2.0 from source. Now I compiled and installed pgrouting 2.0 (after one hour searching the dependencies). I created the extension on my database in postgres.

I included the function from the sql files pgrouting.sql But the functions I need are in pgrouting_legacy.sql and pgrouting_dd_legacy.sql

The error output is : psql:/usr/share/postgresql/9.1/contrib/pgrouting-2.0/pgrouting_legacy.sql:299: ERROR: type "geoms" does not exist

Postgresql and Postgis are working fine...

I followed this documentation : http://pgrouting.org/docs/1.x/install.html

http://www.bostongis.com/PrinterFriendly.aspx?content_name=pgrouting_osm2po_1

0 投票
1 回答
23848 浏览

python - psycopg2.InterfaceError: 连接已关闭 / pgr_astar

我正在使用 psycopg2 从 python 访问 postgresql 数据库。当我尝试为最短路径运行 pgrouting 函数“pgr_astar”时,我收到一个错误

基本上,发生的事情是:当 pgr_astar 没有找到两点之间的路径时,它会导致数据库崩溃,并关闭与数据库的连接。

如何避免这种情况?

我试图用 try/except 隔离函数并创建自己的连接,所以如果它关闭也没问题:

但在这种情况下,我收到一个

如何管理不可能的路径?

(我对 pgdb 和旧的 shortest_path_astar 函数(我不再可用)做了同样的事情,我没有问题)

Postgresql 日志是:

我做的查询是:

door = ''S'' 表示门已关闭,在这种情况下,值为 -1。

0 投票
2 回答
1719 浏览

postgresql - pgr_astar 和不可能的边缘(例如,锁着的门)

我正在使用带有 pgrouting 的 postgresql / PostGIS,我需要计算最短路径。在以前版本的 pgrouting 中,我使用的是 shortest_path_astar。在我的路由图中,我有不可能的部分,例如锁着的门。我用了:

基本上:当门关闭时(门 = ''S''),我将成本固定为 -1。在这个函数的新版本 pgr_astar 之前它工作得很好。使用 pgr_astar 而不是 shortest_path_astar,此查询会使服务器崩溃。

如何更改我的功能以避免崩溃?

0 投票
1 回答
1229 浏览

performance - PostgreSQL 函数和内存问题

在从该站点获得大量帮助后,我终于创建了一组功能来完成我想要的工作。谢谢你,但似乎还有最后一个问题,即有效的内存使用。这是问题所在:
在 postgreSQL 9.3 中,使用 postGIS 2.1 和 pgRouting 2.0,我创建了一个函数,该函数使用 pgrouting 函数 pgr_trsp 计算两点之间的路线并返回几何(线串)值。这是代码:

此函数在另一个函数中使用几何结果批量更新大表(800k+)。这里供参考:

例外是绝对必要的,因为它们处理某些情况,即上述表中缺少某些数据,或者找不到路由路径。但是,似乎它们导致了问题,即更新查询在几分钟后崩溃。执行几分钟后我收到的消息是:

错误:内存不足
SQL 状态:53200
详细信息:大小为 640000 的请求失败。

所以问题是:我怎样才能有效地使用或重新编码这个函数来更新我想要的表?有任何想法吗?
先感谢您!