`
izuoyan
  • 浏览: 9223242 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用pgRouting进行路径分析

阅读更多

pgRouting是一个基于PostgreSQL/PostGIS的项目,目的是提供路径分析的功能,它是PostLBS的一个子项目,这个项目使用GPL许可发布。

pgRouting的安装很简单,以Windows为例,下载编译包以后解压缩,将lib目录下文件复制到PostgreSQL的lib目录下,再在PostgreSQL数据库中执行share/contrib目录下的sql脚本,这些脚本分别对应不同的功能:“core”对应Dijkstra算法计算最短路径,使用函数为“shortest_path_*”;“dd”对应Driving Distance行驶距离计算,使用函数为“driving_distance”;“tps”对应采用遗传算法的Travelling Sales Person方法,使用函数为“tsp_*”。

下面用日本神奈川的城市道路数据进行测试。

计算最短路径我们使用shortest_path这个函数,这个函数需要提供5个参数,下面是shortest_path的函数原型:
shortest_path(sql text, source_id integer, target_id integer, directed boolean, has_reverse_cost boolean)

这里的sql是一个sql语句,通过这个sql语句可以获得需要计算的数据集合;source和target分别是起始节点的id;directed表明是否限制方向。需要说明的是这个sql语句,在这个sql中需要查询到一些特殊的字段:id、source、target、cost等,而且这些字段的类型必须和pgRouting的要求相符。下面是我构造的一个查询:
SELECT * FROM shortest_path(' SELECT objectid as id, source::integer, target::integer, length::double precision as cost FROM kanagawa', 84808, 13234, false, false);

在本机上测试,上述查询在19万行数据中执行了2秒得到结果318行(路径分为318段):

以下是服务器端的主要代码:
public ArrayList> getNodes(int source, int target)
{
ArrayList> result = new ArrayList>();

if ( this.getConn()==null )
return result;

try
{
String sql = "SELECT * FROM shortest_path('SELECT objectid as id,source::integer,target::integer,length::double precision as cost FROM kanagawa', "+source+", "+target+", false, false) as a left join kanagawa as b on a.edge_id=b.objectid;";

Statement st = this.getConn().createStatement();
st.setFetchSize(0);
ResultSet rs = st.executeQuery(sql);
while (rs.next())
{
HashMap map = new HashMap();
map.put("x1", rs.getDouble("x1"));
map.put("y1", rs.getDouble("y1"));
map.put("x2", rs.getDouble("x2"));
map.put("y2", rs.getDouble("y2"));
result.add(map);
}
rs.close();
st.close();
}
catch(Exception e)
{
System.err.print(e);
}

return result;
}

分享到:
评论

相关推荐

    postgis pgrouting 路径查询经验

    总结来说,PostGIS和pgrouting的结合使用,为开发者和GIS专业人员提供了强大的地理空间分析工具,能够解决复杂的空间路径查询问题。通过深入学习和实践,我们可以利用它们构建出高效、实用的地理信息系统应用。

    pgRouting求两点间最短路径

    -- 最短路径分析结果 v_perStart double precision; -- v_statpoint 在 v_res 上的百分比 v_perEnd double precision; -- v_endpoint 在 v_res 上的百分比 sqltext text; pointTemp integer; v_shPath ...

    pgrouting俩点间最短路径

    将3857的shp路网导入postgis不做介绍,主要介绍入库后的一系列处理

    pgrouting-2.6.1扩展下载

    它允许用户在数据库级别进行路径规划和网络分析,适用于交通、物流、地理信息系统等多个领域。PGRouting 2.6.1 版本是该扩展的一个重要里程碑,它包含了一系列优化和改进,以提升性能和功能。 ### 1. PostgreSQL ...

    编译后的pgrouting.zip

    5. **使用编译后的pgrouting**:解压下载的`编译后的pgrouting`文件,按照pgrouting的官方文档进行安装和配置,然后将其加载到PostgreSQL数据库中,就可以开始进行路由分析了。 这个压缩文件的提供者已经克服了上述...

    pgRouting-1.02_pg-8.3.3.rar

    pgRouting是一个基于PostgreSQL/PostGIS的项目,目的是提供路径分析的功能,它是PostLBS的一个子项目,这个项目使用GPL许可发布。 pgRouting的安装很简单,以Windows为例,下载编译包以后解压缩,将lib目录下文件...

    postgis2.2安装包附属包-pgrouting的rpm包

    6. 接下来,你可以根据需求导入网络数据,例如道路图层,并使用pgrouting提供的SQL函数进行路径查找、最短路径计算等操作。 7. 为了验证安装是否成功,可以尝试运行pgrouting的一些示例查询,或者根据官方文档进行...

    pgRouting文档

    本工作坊旨在通过实践示例展示如何利用 **pgRouting** 进行道路网络的最短路径分析,并结合 **OpenStreetMap** 的道路数据进行操作。该文档详细介绍了从数据准备到实际查询的全过程,并探讨了在 GIS 应用中遇到的...

    postgres14.5+postgis3.3.2+pgRouting3.4.2

    pgRouting 是基于 PostgreSQL 的路由模块,主要用于处理网络分析和路径规划问题。 在描述中提到的链接是两个安装指南,分别来自 CSDN 的短链接和一篇详细的博客文章。这些链接提供了安装和配置这三个组件的详细步骤...

    pgRouting-1.03_pg-8.4.2.zip

    这些算法使得用户可以进行地理空间网络分析,例如找出两点间的最短路径、计算服务区范围、模拟交通流动等。 2. **集成PostGIS**:PostGIS是PostgreSQL数据库的一个扩展,增加了对地理和矢量数据的支持。它允许存储...

    路由插件pgrouting和中文分词插件zhparser.zip

    `pgrouting`主要用于地理信息系统(GIS)中的路径规划和网络分析,而`zhparser`则是一个用于中文分词的插件,对于处理中文文本数据尤其有用。接下来,我们将深入探讨这两个插件的功能、安装和使用方法。 首先,`...

    12.(地图工具篇)PostgreSQL+PostGIS实现两坐标点之间最短路径查询算法函数.zip

    下载如有问题,可私信博主。下载前建议先查看博客内容,其地址为:https://blog.csdn.net/QQ98281642/article/details/120483897

    pgRoutingDocumentation-2.6.0.pdf

    **pgRouting** 是一款基于 **PostGIS** 和 **PostgreSQL** 的开源地理空间路由扩展插件,它为地理信息系统(GIS)领域提供了强大的路径规划和其他网络分析功能。此文档为 **pgRouting v2..6.0** 的技术手册。 #### ...

    最短路径规划

    3. `pgRouting_jsp_js`:这个文件名暗示它可能包含与PGRouting和JavaScript相关的代码,可能是一个JavaScript库或者脚本,用于与服务器上的PGRouting服务进行交互,比如发送查询请求,获取最短路径信息,然后在...

    pgrouting:存储库包含pgRouting库。 开发分支是“开发”,稳定分支是“主”

    最新文档: : 要求建筑要求PerlC和C ++编译器使用Boost 1.53编译时不支持几何图形,因此不支持pgRouting的pgr_alphaShape 使用Boost 1.53到Boost 1.75进行编译需要具有C ++ 03或C ++ 11标准支持的C ++编译

    pgRoutingWorkshop:pgRouting工作坊

    pgRouting是一个开源项目,它为PostgreSQL数据库提供了网络分析功能,包括路径查找、最短路径计算等。通过参加这个工作坊,你将能够掌握如何在本地环境中安装和配置pgRouting,以及如何利用它来解决实际的交通网络...

    pgRoutingDocumentation-2.3.2.pdf

    比如,在网络分析功能方面,pgRouting能够执行最短路径、旅行商问题(TSP)、车辆路径问题(VRP)等多种路径分析。除了导航功能,pgRouting还可能提供一些网络分析的其他工具,例如节点、边的连接性测试,以及网络...

    城市公交网络中基于实时交通信息的动态最短路径算法

    这些算法要么以总行程时间最短为主要原则,要么以换乘次数最少为主要原则,或者将两者结合进行分析。但在实际应用中,这些算法常常简化了一些影响实际出行决策的因素,如实时交通信息、换乘细节等,因此具有一定的...

    [GIS]KingbaseGIS使用手册.pdf

    pgrouting 是一个用于计算最短路径的扩展模块,适用于路网等场景下的路径规划问题。 **2.1.6 pointcloud** pointcloud 模块支持点云数据的导入、管理和查询,适用于大规模点云数据的处理。 ##### 2.2 KingbaseES ...

Global site tag (gtag.js) - Google Analytics