标签: pgrouting

Postgres SSL SYSCALL错误:使用python和psycopg检测到EOF

使用psycopg2包与python 2.7我一直得到标题错误:psycopg2.DatabaseError:SSL SYSCALL错误:检测到EOF

它只发生在WHERE column LIKE ''%X%''我的pgrouting查询中添加一个子句时.一个例子:

SELECT id1 as node, cost FROM PGR_Driving_Distance(
  'SELECT id, source, target, cost 
     FROM edge_table
     WHERE cost IS NOT NULL and column LIKE ''%x%'' ',
  1, 10, false, false)
Run Code Online (Sandbox Code Playgroud)

互联网上的线程表明它是直观的SSL问题,但每当我注释掉模式匹配方面的事情时,查询和数据库的连接工作正常.

这是在运行Xubuntu 13.10的本地数据库上.

进一步调查后:看起来这可能是由于pgrouting扩展程序导致数据库崩溃,因为它是一个错误的查询,并且它们不是具有此模式的链接.

会很快发布一个答案......

python postgresql ssl psycopg2 pgrouting

27
推荐指数
7
解决办法
4万
查看次数

pgRouting:从最近节点沿边缘开始的路线

我正在尝试找到一种从线串上最近的点到我当前位置(纬度,经度)的路线。到目前为止,我能够获得最短路径,但它从线串的最开头(也称为源)开始。我正在使用 prg_trsp http://docs.pgrouting.org/2.0/en/src/trsp/doc/index.html 因为它具有指定沿线串的起始位置的功能。我能够正确计算沿线串的距离并将值传递给函数,但无法弄清楚如何使用函数 (pgr_costResult[]) 的结果来指定路线应从何处开始(部分沿最近的线串)。

当我将路由算法的结果连接到边缘表以获取几何图形时,我有一种感觉,我的连接做错了,因为当我连接时,它使用边缘表的完整几何图形而不是段。虽然,查看文档,我没有看到从路由函数中获取返回段的位置。

下面是我正在尝试执行的操作(红线)和我所拥有的(蓝线)的屏幕截图,该点是当前位置。红线来自于使用 qgis 中的 pgrouting 插件和 trsp(edge) 选择。

参见下面的代码:

任何帮助将非常感激!

在此输入图像描述

SELECT st_linemerge(edgeTable.geom_way) FROM pgr_trsp('SELECT id, source, target, cost FROM edgeTable', 
    (SELECT id FROM origin),
    (SELECT * FROM sourcePos),
    (SELECT id FROM destination),
    (SELECT * FROM destPos),
    false, false) AS shortestPath
    JOIN edgeTable ON shortestPath.id2 = edgeTable.id;
Run Code Online (Sandbox Code Playgroud)

origin 是起始路线的 id

sourcePos 是沿线串偏移的距离

目的地是结束线串的id

destPos 是结束线串的分数

全部按此处指定:http ://docs.pgrouting.org/2.0/en/src/trsp/doc/index.html

postgresql pgrouting

6
推荐指数
1
解决办法
2030
查看次数

基于上一行和下一行的 Postgres 查询

我正在尝试解决 postgresql 中的总线路由问题,该问题需要前一行和下一行的可见性。这是我的解决方案。

步骤1)有一个代表所有边的边表(源和目标代表顶点(公交车站):

postgres=# select id, source, target, cost from busedges;
 id | source | target | cost
----+--------+--------+------
  1 |      1 |      2 |    1
  2 |      2 |      3 |    1
  3 |      3 |      4 |    1
  4 |      4 |      5 |    1
  5 |      1 |      7 |    1
  6 |      7 |      8 |    1
  7 |      1 |      6 |    1
  8 |      6 |      8 |    1
  9 |      9 | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql dijkstra pgrouting

6
推荐指数
1
解决办法
5526
查看次数

错误:函数addgeometrycolumn不是唯一的

我正在尝试使用以下功能;

SELECT Assign_vertex_id('ways', 0.00001, 'the_geom', 'gid')
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它给了我以下错误;

NOTICE:  CREATE TABLE will create implicit sequence "vertices_tmp_id_seq" for serial column "vertices_tmp.id"
CONTEXT:  SQL statement "CREATE TABLE vertices_tmp (id serial)"
PL/pgSQL function "assign_vertex_id" line 15 at EXECUTE statement
ERROR:  function addgeometrycolumn(unknown, unknown, integer, unknown, integer) is not unique
LINE 1: SELECT addGeometryColumn('vertices_tmp', 'the_geom', 4326, '...
               ^
HINT:  Could not choose a best candidate function. You might need to add explicit type casts.
QUERY:  SELECT addGeometryColumn('vertices_tmp', 'the_geom', 4326, 'POINT', 2)
CONTEXT:  PL/pgSQL function "assign_vertex_id" …
Run Code Online (Sandbox Code Playgroud)

database postgresql postgis pgrouting

5
推荐指数
2
解决办法
7489
查看次数

建立一个道路网络

我有不同数量的轨道代表不同的道路.每条赛道代表一条道路.我把这个gpx文件加载到我的postgres中.

现在我的问题是如何在所有这些道路之间建立网络,以便能够找到从任何轨道点到任何其他轨道点的最短路径.在这下面你可以看到我的4条道路的图像. 我的道路

我已经安装了pgrouting和postgis.我已经通过创建源和目标列并使用assign_vertex_id()加载数据来完成某些操作.问题是网络没有正确构建,例如我只能从同一条道路的起点到终点而不是不同的道路.有什么建议我如何在所有这些道路之间建立适当的网络?

routing postgis qgis pgrouting

5
推荐指数
1
解决办法
926
查看次数

psycopg2.InterfaceError:连接已关闭/ pgr_astar

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

cur = db.cursor()
psycopg2.InterfaceError: connection already closed
Run Code Online (Sandbox Code Playgroud)

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

如何才能避免这种情况呢?

我尝试使用 try/ except 隔离该函数并创建自己的连接,因此如果它关闭也没有问题:

conn = psycopg2.connect(...)
try:
    result = getRecords(conn,query_pgr_astar)
    return float(result[0]['sum'])
except:
    return 500000000.0
conn.close()
Run Code Online (Sandbox Code Playgroud)

但在这种情况下我收到

cur.execute(query)
psycopg2.DatabaseError: SSL SYSCALL error: EOF detected
Run Code Online (Sandbox Code Playgroud)

如何管理不可能的路径?

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

Postgresql 日志是:

2013-11-27 15:54:35 CET LOG:  terminating any other active server processes
2013-11-27 15:54:35 CET WARNING:  terminating connection because of crash of another server process
2013-11-27 15:54:35 CET DETAIL: …
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2 a-star pgrouting

5
推荐指数
1
解决办法
4万
查看次数

SELECT pgr_node网络查询失败

我正在 Windows 上工作,并在数据库上启用了扩展 postgis、pgrouting。我安装了 postgreSQL 9.4,并且正在使用来自无界研讨会( http://workshops.boundlessgeo.com/tutorial-routing/ )的数据。

SELECT pgr_nodeNetwork('edges',0.001,'geom','gid','noded')
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,它运行大约 1 分钟,之后会生成FAIL. 我该如何解决这个问题?我的 pgr_createTopology 查询已成功运行。

NOTICE:  PROCESSING:
NOTICE:  pgr_nodeNetwork('edges',0.001,'geom','gid','noded')
NOTICE:  Performing checks, pelase wait .....
NOTICE:  Processing, pelase wait .....
ERROR:  line_locate_point: 1st arg isnt a line
CONTEXT:  SQL statement "create temp table inter_loc on commit drop as ( select * from (
        (select l1id, l2id, st_linelocatepoint(line,source) as locus from intergeom)
         union
        (select l1id, l2id, st_linelocatepoint(line,target) as locus from intergeom)) as foo
        where locus<>0 and locus<>1)" …
Run Code Online (Sandbox Code Playgroud)

postgresql postgis pgrouting

5
推荐指数
1
解决办法
1605
查看次数

使用PGRouting的基于GTFS的公交规划

我已经按照以下教程通过导入GTFS数据来设置OpenTripPlanner并且它工作正常.

http://docs.opentripplanner.org/en/latest/Basic-Tutorial/

但我必须将旅行计划整合到现有的GIS实施中,该实施使用OpenLayers,PostgreSQL,PostGIS和PGRouting.我不确定是否可以使用OpenTripPlanner API来获取Trips并在GUI上显示.

我想知道,是否可以使用PostGIS和Pgrouting(不使用OpenTripPlanner)进行类似于OpenTripPlanner的旅行计划?

如果可能的话,Pgrouting数据库结构或查询逻辑将如何在过境站点之间查找即将到来的旅行?

在Pgrouting DB中,找到了除路径和顶点之外的两个表POI和空间参考表,是否需要将GTFS数据导入此POI和空间参考表?

提前致谢.

gis postgis gtfs pgrouting opentripplanner

5
推荐指数
1
解决办法
278
查看次数

osm2pgrouting - 解析数据格式不正确(无效令牌)

我需要通过 osm2pgrouting 工具将开放街道地图数据导入我的 PostGIS 数据库。但是当我运行命令时,表被创建但没有任何数据。你能告诉我我做错了什么吗?我已经在我的数据库中安装了扩展 pgrouting ...

作为 mapconfig,我使用默认的 mapconfig.xml,它与 osm2pgrouting 工具 (C:\Program Files\PostgreSQL\9.5\bin) 位于同一文件夹中。我正在使用 Windows 操作系统。

E:\>osm2pgrouting -f osm_data.osm.pbf --dbname osm_db --conf mapconfig.xml --clean
Execution starts at: Fri Jan 20 19:24:13 2017

***************************************************
           COMMAND LINE CONFIGURATION             *
***************************************************
Filename = osm_data.osm.pbf
Configuration file = mapconfig.xml
host = localhost
port = 5432
dbname = osm_db 
username = postgres
password =
schema=
prefix =
suffix =
Drop tables
Don't add nodes
***************************************************
Connecting to the database
host=localhost user=postgres dbname=osm_db port=5432
connection …
Run Code Online (Sandbox Code Playgroud)

postgresql postgis openstreetmap pgrouting

4
推荐指数
1
解决办法
796
查看次数