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的结合使用,为开发者和GIS专业人员提供了强大的地理空间分析工具,能够解决复杂的空间路径查询问题。通过深入学习和实践,我们可以利用它们构建出高效、实用的地理信息系统应用。
-- 最短路径分析结果 v_perStart double precision; -- v_statpoint 在 v_res 上的百分比 v_perEnd double precision; -- v_endpoint 在 v_res 上的百分比 sqltext text; pointTemp integer; v_shPath ...
将3857的shp路网导入postgis不做介绍,主要介绍入库后的一系列处理
它允许用户在数据库级别进行路径规划和网络分析,适用于交通、物流、地理信息系统等多个领域。PGRouting 2.6.1 版本是该扩展的一个重要里程碑,它包含了一系列优化和改进,以提升性能和功能。 ### 1. PostgreSQL ...
5. **使用编译后的pgrouting**:解压下载的`编译后的pgrouting`文件,按照pgrouting的官方文档进行安装和配置,然后将其加载到PostgreSQL数据库中,就可以开始进行路由分析了。 这个压缩文件的提供者已经克服了上述...
pgRouting是一个基于PostgreSQL/PostGIS的项目,目的是提供路径分析的功能,它是PostLBS的一个子项目,这个项目使用GPL许可发布。 pgRouting的安装很简单,以Windows为例,下载编译包以后解压缩,将lib目录下文件...
6. 接下来,你可以根据需求导入网络数据,例如道路图层,并使用pgrouting提供的SQL函数进行路径查找、最短路径计算等操作。 7. 为了验证安装是否成功,可以尝试运行pgrouting的一些示例查询,或者根据官方文档进行...
本工作坊旨在通过实践示例展示如何利用 **pgRouting** 进行道路网络的最短路径分析,并结合 **OpenStreetMap** 的道路数据进行操作。该文档详细介绍了从数据准备到实际查询的全过程,并探讨了在 GIS 应用中遇到的...
pgRouting 是基于 PostgreSQL 的路由模块,主要用于处理网络分析和路径规划问题。 在描述中提到的链接是两个安装指南,分别来自 CSDN 的短链接和一篇详细的博客文章。这些链接提供了安装和配置这三个组件的详细步骤...
这些算法使得用户可以进行地理空间网络分析,例如找出两点间的最短路径、计算服务区范围、模拟交通流动等。 2. **集成PostGIS**:PostGIS是PostgreSQL数据库的一个扩展,增加了对地理和矢量数据的支持。它允许存储...
`pgrouting`主要用于地理信息系统(GIS)中的路径规划和网络分析,而`zhparser`则是一个用于中文分词的插件,对于处理中文文本数据尤其有用。接下来,我们将深入探讨这两个插件的功能、安装和使用方法。 首先,`...
下载如有问题,可私信博主。下载前建议先查看博客内容,其地址为:https://blog.csdn.net/QQ98281642/article/details/120483897
**pgRouting** 是一款基于 **PostGIS** 和 **PostgreSQL** 的开源地理空间路由扩展插件,它为地理信息系统(GIS)领域提供了强大的路径规划和其他网络分析功能。此文档为 **pgRouting v2..6.0** 的技术手册。 #### ...
3. `pgRouting_jsp_js`:这个文件名暗示它可能包含与PGRouting和JavaScript相关的代码,可能是一个JavaScript库或者脚本,用于与服务器上的PGRouting服务进行交互,比如发送查询请求,获取最短路径信息,然后在...
最新文档: : 要求建筑要求PerlC和C ++编译器使用Boost 1.53编译时不支持几何图形,因此不支持pgRouting的pgr_alphaShape 使用Boost 1.53到Boost 1.75进行编译需要具有C ++ 03或C ++ 11标准支持的C ++编译
pgRouting是一个开源项目,它为PostgreSQL数据库提供了网络分析功能,包括路径查找、最短路径计算等。通过参加这个工作坊,你将能够掌握如何在本地环境中安装和配置pgRouting,以及如何利用它来解决实际的交通网络...
比如,在网络分析功能方面,pgRouting能够执行最短路径、旅行商问题(TSP)、车辆路径问题(VRP)等多种路径分析。除了导航功能,pgRouting还可能提供一些网络分析的其他工具,例如节点、边的连接性测试,以及网络...
这些算法要么以总行程时间最短为主要原则,要么以换乘次数最少为主要原则,或者将两者结合进行分析。但在实际应用中,这些算法常常简化了一些影响实际出行决策的因素,如实时交通信息、换乘细节等,因此具有一定的...
pgrouting 是一个用于计算最短路径的扩展模块,适用于路网等场景下的路径规划问题。 **2.1.6 pointcloud** pointcloud 模块支持点云数据的导入、管理和查询,适用于大规模点云数据的处理。 ##### 2.2 KingbaseES ...