我有一个河网shapefile,我使用pgRouting 2.0来路由它。我使用以下sql代码使其可路由,
alter table tc_15000_w_area add column source integer;
alter table tc_15000_w_area add column target integer;
select pgr_createTopology('tc_15000_w_area', 0.0001, 'the_geom', 'gid');我想要的只是一个包含源/目标的可路由表,从所有源到目标的方向与河流的方向相同。这是原理图,

紫色的线就是那条河 红点是节点(顶点)。 红色数字是节点的编号。 每个河段都有它的源头(节点)和目标。
但是我检查结果表,我发现node#11始终是目标。这将使至少一个边缘有错误的方向(流动方向)。

pgRouting能否分配源和目标的数目,并使从源到目标的方向与流方向相同?如果没有,我能做些什么?
我在sql代码中使用了不同的公差,但得到了相同的结果,在pgRouting 8.4下使用1.x版本的PostgreSQL也得到了相同的结果。
发布于 2014-05-27 17:54:45
公差定义了两个点之间的最小距离,这些点将被合并成一个点。例如,如果您有两个点,并且它们之间在数据库单元中的距离小于公差,那么它们将被认为是相同的点,并将得到相同的编号。
在运行pgr_createtopology()之前,在几何表中给定一个边缘段,您如何知道流的方向?基于数字化的方向?我们在分配数字时不考虑这一点。当我们处理边的时候,数字是先到先分配的。
为了解决您的问题,您可能需要编写一个节点重命名算法,该算法的工作方式如下: 1.运行pgr_createtopology() 2.从网络水槽(即河网排水)进行深度优先搜索,并按反向顺序分配数字(最大从排水沟到上游时越小)。
我将为此创建新的节点源和目标列。也许有更好的方法来解决这个问题,但目前还不清楚。
https://stackoverflow.com/questions/23887283
复制相似问题