A *와 Dijkstra에 회전 제한을 추가하는 방법이 있습니까?


11

우리는 현재 pgRouting과 협력하고 있으며 회전 제한을 구현할 수있는 방법이 없다는 것을 발견했습니다 (예 : 금지 된 우회전 또는 좌회전). Shooting * 알고리즘에서 "to_cost"및 "rule"을 지정할 수 있지만 A star 및 Dijktra 알고리즘을 사용하여 이러한 제한을 구현하는 방법을 찾을 수 없습니다.

A star 및 Dijkstra 방법에 특수 회전 제한을 구현하는 방법이 있습니까?

답변:


3

예, 회전 제한 최단 경로 (trsp)를 구현했습니다. 나는 그것이 origin / trsp에서 git branch로 체크인되었다고 생각합니다. 아직 문서화되지 않았습니다. 궁금한 점이 있거나 pgrouting list에 도움이 필요하면 행 아웃이 있기 때문입니다.

-스티브


1

이것을 찾고 있습니까?

7.2. Restricted access

Another possibility is to restrict access to roads of a certain type by either setting a very high cost for road links with a certain attribute or by not selecting certain road links at all:

UPDATE classes SET cost=100000 WHERE name LIKE 'motorway%';

Through subqueries you can mix your costs as you like and this will change the results of your routing request immediately. Cost changes will affect the next shortest path search, and there is no need to rebuild your network.

Of course certain road classes can be excluded in the WHERE clause of the query as well, for example exclude living_street class:

SELECT * FROM shortest_path_shooting_star(
        'SELECT gid as id, class_id, source, target, length*c.cost as cost,
                x1, y1, x2, y2, rule, to_cost, reverse_cost*c.cost as reverse_cost
        FROM ways w, classes c
        WHERE class_id=c.id AND class_id != 111', 6585, 8247, true, true);

Of course pgRouting allows you all kind of SQL that is possible with PostgreSQL/PostGIS.

워크샵에서 나온 조각입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.