使用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扩展程序导致数据库崩溃,因为它是一个错误的查询,并且它们不是具有此模式的链接.
会很快发布一个答案......
我正在尝试找到一种从线串上最近的点到我当前位置(纬度,经度)的路线。到目前为止,我能够获得最短路径,但它从线串的最开头(也称为源)开始。我正在使用 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 中的总线路由问题,该问题需要前一行和下一行的可见性。这是我的解决方案。
步骤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) 我正在尝试使用以下功能;
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) 我有不同数量的轨道代表不同的道路.每条赛道代表一条道路.我把这个gpx文件加载到我的postgres中.
现在我的问题是如何在所有这些道路之间建立网络,以便能够找到从任何轨道点到任何其他轨道点的最短路径.在这下面你可以看到我的4条道路的图像.
我已经安装了pgrouting和postgis.我已经通过创建源和目标列并使用assign_vertex_id()加载数据来完成某些操作.问题是网络没有正确构建,例如我只能从同一条道路的起点到终点而不是不同的道路.有什么建议我如何在所有这些道路之间建立适当的网络?
我正在使用 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) 我正在 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) 我已经按照以下教程通过导入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和空间参考表?
提前致谢.
我需要通过 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)