[pgrouting-users] Problem using TRSP

Tao Romera Martinez taoromera at gmail.com
Wed Aug 22 23:06:02 PDT 2012


Hello Stephen,

Thank you very much for your quick answer.
The query you asked to me to run gives some rows with cost_car=0, but
none of them is in the list of edges returned by
turn_restrict_shortest_path.
Here is the query result with the cost_car for each edge:

   vertex_id | edge_id |    cost    |  cost_car
 -----------+---------+-------------------------------------
      284867 |  211472 |           0        |  0.07751676
      284794 |  211471 |           0        | 0.2359118
      134058 |  205895 |        0.15       |  0.14653888
      284826 |  205894 |           0        |  0.042989656
      131290 |  205893 |           0        |  0.074959315
      127938 |  201505 |           0        |  0.054259572
      132923 |  201504 |           0        |  0.022826955
 <...>
      282198 |  425307 |           0        |  0.07132499
      282197 |  795399 | 0.021921627 |  0.021921627
      282276 |  795400 |  0.05221079  |  0.05221079
      282035 |  425170 |        0.15       |  0.0967519
      282034 |      -1 |           0            |  -

I am eager to try to find the reason of this strange behaviour, so
tell me if there is anything I can do to figure it out.

Best regards,

Tao

2012/8/20 Stephen Woodbridge <woodbri at swoodbridge.com>:
> Please keep the queries on the list.
>
> No, I have no idea, I've never seen anything like that before.
>
> What does this query return?
>
> select count(*) from japan where cost_car=0;
>
> -Steve
>
>
> On 8/20/2012 7:26 AM, Tao Romera Martinez wrote:
>>
>> Dear Stephen,
>>
>> I have been trying to use your function for turn restricted shortest
>> path routing.
>> I installed the postgresql functions, prepared a table with the turn
>> costs, and now I am able to route through a network using turn
>> restrictions. Well, almost.
>>
>> When I launch a request, the column "cost" contains 0 values except
>> for the rows where there is a turn (the cost is the one set for
>> turns).
>> The request is:
>>
>> SELECT * FROM turn_restrict_shortest_path(
>> 'SELECT id AS id, source::integer, target::integer, cost_car AS cost
>> FROM japan WHERE japan.geom_way && ST_MakeEnvelope(139.675, 35.729,
>> 139.705, 35.762)',
>> 284867,     -- node_id of start
>> 282034,     -- node_id of end
>> false,  -- directed graph?
>> false,  -- has_reverse_cost?
>> 'SELECT to_cost::double precision, teid::integer AS target_id,
>> feid||coalesce('',''||via,'''') AS via_path FROM turn_costs WHERE teid
>> IN (select id FROM japan WHERE japan.geom_way &&
>> ST_MakeEnvelope(139.675, 35.729, 139.705, 35.762)) ');
>>
>> The ST_MakeEnvelope is just to create a window and limit the otherwise
>> huge amount of ways.
>>
>> The table "japan" looks like:
>>
>>   id | osm_id  | osm_name | osm_source_id | osm_target_id | clazz |
>> flags | source | target | km | kmh | cost | reverse_cost | x1 | y1 |
>> x2 | y2 | geom_way | cost_car
>>
>> ----+---------+----------+---------------+---------------+-------+-------+--------+--------+-----------+-----+-----------+--------------+----------+------------+-------------+------------+----------------------------
>>    1 | 4847506 |          |      31236733 |      31236584 |    11 |
>> 1 |  24690 |  24758 | 1.6335903 |   1 | 6.5343612 |    1.6335903 |
>> 139.7578 | 35.6437952 | 139.7688252 | 35.6349433 | <snip> | 3.2671806
>>
>> And the table "turn_costs" looks like:
>>
>>   rid | to_cost |  teid  | feid | via
>> -----+---------+--------+------+-----
>>     1 |    0.15 |     22 |   10 |
>>     2 |    0.15 |     21 |   10 |
>>     3 |    0.15 |    163 |   10 |
>>     4 |    0.15 |     27 |   10 |
>>     5 |    0.15 |     26 |   10 |
>>     6 |    0.15 |     27 |   11 |
>>     7 |    0.15 |     26 |   11 |
>>     8 |    0.15 |    229 |   11 |
>>     9 |    0.15 | 232698 |   11 |
>>    10 |    0.15 |    229 |   12 |
>>
>> The result of the query looks like:
>>
>>   vertex_id | edge_id |    cost
>> -----------+---------+-------------
>>      284867 |  211472 |           0
>>      284794 |  211471 |           0
>>      134058 |  205895 |        0.15
>>      284826 |  205894 |           0
>>      131290 |  205893 |           0
>>      127938 |  201505 |           0
>>      132923 |  201504 |           0
>> <...>
>>      282198 |  425307 |           0
>>      282197 |  795399 | 0.021921627
>>      282276 |  795400 |  0.05221079
>>      282035 |  425170 |        0.15
>>      282034 |      -1 |           0
>>
>> Do you have an idea about why the "cost" values are 0?
>>
>> Thank you very much for your help,
>>
>> Tao
>>
>


More information about the Pgrouting-users mailing list