Questions tagged «pgrouting»

pgRouting扩展了PostGIS / PostgreSQL地理空间数据库,以提供地理空间路由功能。

10
使用开源工具创建行驶时间面吗?
是否有人在使用开源工具和/或数据来生成从给定位置辐射出的行驶时间多边形?例如,我曾使用诸如Network Analyst和Business Analyst之类的ESRI产品来生成多边形边界,这些边界表示用户可以在用户定义的时间段内从给定点沿道路网络行进的最大距离(例如5、10和/或15分钟)。是否有任何类似的开源或基于Web的替代方案? 我看到了这篇文章,但实际上并没有提供其他选择: 您可以使用Google Maps API制作旅行区域多边形吗? 我特别想知道是否有人(或可以)使用OpenStreetMap进行行车时间分析? 另外,是否存在可用于生成多边形的pgRouting实用程序的任何实现? http://pgrouting.postlbs.org/

4
如何优化注浆速度?
我在通过osm2pgrouting创建的postgis数据库上使用pgrouting。它在有限的数据集上表现出色(3.5k种方式,所有最短路径A *搜索均<20 ms)。 但是,由于我从Europe.osm导入了一个更大的边界框(122k方向),因此性能下降了很多(最短路径的成本约为900ms)。 我认为使用A *不会使这些边缘中的大多数受到干扰。 到目前为止,我为提高速度所做的工作: 在几何列上放置索引(无明显影响) 我的内存从8GB增加到16GB 将Postgresql内存设置(shared_buffers,effective_cache_size)从(128MB,128MB)更改为(1GB,2GB)(无明显效果) 我感觉大多数工作都在制作图形的C Boost库中完成,因此优化postgresql不会给我带来更好的结果。当我对每次搜索选择的A *行集合进行细微更改时,我有点担心boost库无法缓存我的图形,并且每次都必须重建所有122k边(即使它只会使用非常每个查询的限制子集)。而且我不知道与实际最短路径搜索相比,花了多少钱。 你们中有人在122k或更高版本的OSM数据集上使用注浆吗?我应该期待什么表现?哪些设置对性能的影响最大?

1
PostGIS函数如何处理缓冲区和外部存储?
我看到PostGIS中不断增加的新功能列表,其中一些涉及GEOS(例如ST_ClusterKMeans)。一些功能(例如中的功能pgrouting)依赖于其他库(例如BGL)。 我的印象是,许多这些基础库(通常在C / C ++中)不处理内存与辅助内存/存储/磁盘之间的缓冲区管理。 那么,PostGIS功能之上的PostGIS功能是否可以处理无法存储在物理(或虚拟)内存中的大型数据集? 如果是这样,这些缓冲区管理功能从何而来(从实现的角度来看)?

1
使用QGIS和pgRouting在最佳人行道上进行蒙特卡洛模拟
我是空间分析的新手,不胜感激我正在尝试的一个项目的总体指导,概述如下(我从头开始)。 目标:在我的家乡寻找在2000英尺长的人行道上安装最佳位置的位置,以便将最多的家庭与中央商务区(CBD)连接,此处的“连接”意味着距CBD的步行距离为1.2英里。我有shapefile,其中显示了现有的结构(房屋),道路和人行道(已安装)。 这是我建议的解决方案/思考过程: 将就地人行道网络转换为通过权重(即距离)连接的节点的数据库。是否可以通过单击所有路口在QGIS(或其他程序)中直接执行此操作? 使用pgRouting或其他路由功能计算距离中央商务区1.2英里(例如,经纬度或多边形)步行距离内的家庭数。这将是基本情况下的“家庭访问”值。 使用路层作为指导,将另外2000英尺(例如10英尺长)的人行道随机放置到人行道层上。这相当于任意构造一堆新的人行道。 使用(1)中的新行人网络重新计算节点和权重,然后使用(2)重新计算现在距离CBD 1.2英里以内的住户数量。它应该随着人行道的增加而增加。将其他人行道的位置和关联的“家庭访问”值保存到文件(例如电子表格)中。 重复步骤(3)和(4)10000次,类似于Monte Carlo模拟。使用10000个数据点集,选择人行道放置位置,以在距CBD 1.2英里范围内的住户数量最大化。 这种思考过程听起来是否现实?有没有人有什么建议? -我想使用QGIS和R的某种组合来实现这一点,但是我愿意学习PostGIS和/或Python(或其他任何东西)以实现目标。

2
帮助选择合适的路由引擎
我正在构建一个路由计划系统,但是我仍然必须决定我将使用哪种底层路由引擎。到目前为止,我已经发现了pgrouting和neo4j。 我的路由网络位于postgresql / postgis数据库(从shapefile导入)中。我进行了一些查询,以提取节点(必须决定要走的方向或死角的方式的端点)并提取边缘(通常由几种连续的方式组成)。我所有的边缘都是双向的。 我的主要目标是使用距离=成本的A-star算法来计算该网络上的路由。 我的感觉告诉我,像neo4j这样的图形数据库是行之有效的方法(因为它似乎是为此目的而创建的),但是它们似乎默认情况下并不支持A-star,并且也没有真正的几何意义。 。似乎更适合社交网络而非地图。 灌浆能满足我的需求吗? 它足够快地进行即时查询(+ -2000个节点,+-4000个边缘)吗?通常,对于A-star,这将是几毫秒,但是我不确定在sql中的实现。 向A-star灌浆是否给了我节点和边的列表? 在大多数示例中,我看到有关灌浆的信息,我注意到通常在计算路线后会有一系列命令(例如“在X处向左转,等等”)。灌浆是产生还是从其他系统产生? 希望有人可以给我一些有关选择哪种系统的信息。Neo4j,灌浆或其他系统。

2
如何清除不良的shapefile进行路由?
我正在尝试清理shapefile,使其可用于通过pgrouting,postgis,postgresql进行路由。 在这里,一个交叉路口似乎已经连接起来,但是当我们放大时…。它不是: 同样在这里 : 这里(最大放大)有两种方式,似乎只有一种: 我正在使用具有不同容差的Assign_vertex_id以及QGIS和PostGIS,但是我不知道在其中使用什么。

2
在基于OSM传输网络的R中执行路由分析?
我正在根据人口普查流量数据,工作密度分布和交通网络分析通勤者上班的可能路径。 目前,我正在使用用于QGIS的pgRouting和pgRouting附加组件(在此进行介绍)进行分析: 但是,我希望我采取的所有步骤都可以完全复制(请参阅此处的出色文章),然后我希望从命令行进行分析并保存脚本文件以供将来参考。 R-geo软件包是免费,轻便且稳定的,因此可以很好地满足此要求:下载一个很小的脚本文件,您应该可以重新执行我所做的所有事情(请参见此处,了解Rpubs上与此无关的示例) )。 我为此确定的R包是: gdistance于2012年12月发布,看起来很有希望,但没有迹象表明与osm传输网络兼容 e1071似乎很抽象,可能对我想做的事有些过高 spatstat软件包中的pairdist.lpp函数看起来很有希望,但几乎没有文档 在深入探讨这些问题之前,认为值得询问那些可能面临类似困境的人。 是否可以在R中进行路由分析,还是最好正确学习PostGIS并全部在pgRouting中完成?

4
如何在路线上添加偏移量?
编辑: 我想说明我的问题。假设您位于“ A点”,并且想转到“ B点”。由于不是源/目标节点,因此该点将不在“ at_2po_4pgr”表中。然后,我将搜索点A和B(绿色点)的最近节点。此后,我可能会使用绿点ID执行shortest_path调用,并且会获得“橙色”路径。但是在第一种情况下,要获得实际路径成本(距离),我必须减去“ offsetA”,在第二种情况下,必须添加de“ offset B”。要计算红点和绿点之间的距离,我运行以下查询: SELECT * FROM st_distance( ST_GeomFromText('POINT(-3.6963314 42.3498066)',4326), ST_GeomFromText('POINT(-3.6954276 42.3479634)',4326))。 我如何知道何时添加或减去偏移量? 对不起我的英语不好!

2
如何在水路上航行?
关于通过常规方式路由(pg)有很多信息。正常的方法是人为的,是路由的理想选择。 但是,我对在水路上航行很感兴趣。从理论上讲,这应该与普通路线相同,只是水路通常不是人为的,因此它们由大水体组成,例如湖泊。湖泊不是一条整齐的线,您可以将其用于布线,除此之外,您还必须考虑水深,桥梁和船闸,它们可能会也可能不允许您越过。当然,所有这些又取决于船的大小/深度。 有没有可用的工具来解决我上面描述的一些问题?

3
PgRouting-如何在达到最高费用时剪辑链接?
我有一个代表道路网络的折线shapefile和一个包含点的第二个shapefile。我想使用PostGIS(大概是PgRouting)来识别从这些点辐射的子网或服务区域。 本质上,我希望问一个问题:“从X点开始,如果总旅行预算为1公里,沿着道路网络,我可以在任何给定的方向上走多远?” 在给定1 km的旅行预算的情况下,结果将是一组修剪的折线,它们代表旅行可能性的总范围。 作为参考,此GRASS分析似乎正是我要执行的操作(除了我要在PostGIS中执行的操作):http: //www.gdf-hannover.de/lit_html/grass60_v1.2_en/node57.html#sec : optalloc 下一个示例似乎几乎是我想要做的,只是它似乎回答了“在给定X距离旅行预算的情况下我可以旅行到哪个节点?”这一问题。http://underdark.wordpress.com/2011/02/12/drive-time-isochrones/ 第二个问题并不是我要寻找的答案,因为我希望将折线限制在我的行进距离之内-我不在乎是否将其一直延伸到一个节点。

2
在一个查询中使用PgRouting获得多个最短路径?
我想一次在多个源和目标对上运行最短路径算法,并获得结果表,然后对其进行处理。 我该怎么做呢?该查询不起作用: SELECT a.source, a.target, paths.* FROM all_to_all a, shortest_path_astar('...', a.source, a.target, false, false) paths; ERROR: function expression in FROM cannot refer to other relations of same query level (顺便说一句,all_to_all并不是字面意思,:)只是一些随机对。 这也不起作用: SELECT * FROM all_to_all a, ( SELECT * FROM shortest_path_astar('...', a.source, a.target, false, false) yyy ) AS t2;

3
多车路线优化
我有100个目的地和5辆车,我需要编写一个解决方案以有效地将车辆路由到每个目的地,因此每个目的地都会被其中1辆车访问。其中一些目的地也可能在此期间有时间窗口要访问。 我正在使用PostgreSQL和PostGIS,并希望使用灌浆,但是我不确定它是否适合多辆车-从我对Dijkstra的有限了解等我认为它们是为单辆车设计的。 关于注浆是否可以解决此问题的任何想法,如果可以,是否有任何代码示例?如果没有,是否有任何开源替代品可以做到?


1
使用QGIS和pgRouting计算步行和骑行等时线图?
我相信我应该能够从指定点开始产生步行和骑自行车等时线,所以刚刚安装了QGIS。在使用ArcMap之前,我已经很容易做到这一点,但是,我确实在QGIS方面苦苦挣扎。 从我已阅读的内容中,我应该使用PGRouting和OSM2PGrouting映射(已安装)。我以前从未真正使用过SQL,并寻求做这些等时线的虚拟指南。我已经阅读了各种方法,其中最详细地介绍了我所苦苦挣扎的SQL。

4
将不在线上的点(公交车站)(LINESTRING)连接到网络吗?
我需要将巴士站(点)连接到网络层(OSM数据)。这些公交车站不直接位于线路上(请参见屏幕截图),也不应移动其位置。我使用PostGIS,pgrouting和QGIS,并且网络已经可以通过源列和目标列等进行路由。 我主要想在事后做两件事: 使用最短路径分析获得公交车站之间的距离。 使用OSM网络在距公交车站步行距离处创建等时线。 为了获得准确的值,有必要使路线“开始”和“停止”最接近公交车站。在许多情况下,最接近的现有节点将距离太远而无法获得准确的值。但是,不应有通往公交车站实际位置的路线。在我在图片上的示例中,您可以看到停靠点之间的路线应该是什么样子。 是否有可能将最靠近公交车站的新节点自动插入网络(LINESTRING),或者是否可以在仅针对查询设置的“虚拟点”上开始路由(类似于道路QGIS中的图形插件吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.