[pgrouting-users] Problem using TRSP

Stephen Woodbridge woodbri at swoodbridge.com
Thu Aug 30 08:16:52 PDT 2012


Tao,

I'm not sure what is going on. I could try to reproduce it here next 
week. You might try reducing this to a simpler example. If you want to 
send me a dump I can try here do something like:

create schema test;
create table test.japan as select * from japan WHERE japan.geom_way && 
ST_MakeEnvelope(139.675, 35.729, 139.705, 35.762);
create table test.turn_costs as select * FROM turn_costs WHERE teid
  IN (select id FROM japan WHERE japan.geom_way &&
  ST_MakeEnvelope(139.675, 35.729, 139.705, 35.762));

Then from the commandline do:

pg_dump -Fp -O -x -f test-trsp.sql.gz -z 9 -n test <database> -U <user> 
-h <host>

Then email me (not the list) test-trsp.sql.gz

Thanks,
   -steve

On 8/30/2012 7:32 AM, Tao Romera Martinez wrote:
> Can you think of anything I could try to find the source of the problem?
>
> 2012/8/24 Tao Romera Martinez <taoromera at gmail.com>:
>> Sorry, Stephen, this did not fix the problem. I still have 0 in the cost column.
>>
>> 2012/8/23 Stephen Woodbridge <woodbri at swoodbridge.com>:
>>> Try renaming column "cost" and see if the fixes it.
>>>
>>> alter table japan rename column cost to old_cost;
>>>
>>> Let us know if this fixes the problem, because it means we have a bug.
>>>
>>> You can rename the column back the way it was with:
>>>
>>> alter table japan rename column old_cost to cost;
>>>
>>> Thanks,
>>>    -Steve
>>>
>>>
>>> On 8/23/2012 2:06 AM, Tao Romera Martinez wrote:
>>>>
>>>> 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
>>>>>>
>>>>>
>>>> _______________________________________________
>>>> Pgrouting-users mailing list
>>>> Pgrouting-users at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/pgrouting-users
>>>>
>>>
>>> _______________________________________________
>>> Pgrouting-users mailing list
>>> Pgrouting-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/pgrouting-users
> _______________________________________________
> Pgrouting-users mailing list
> Pgrouting-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/pgrouting-users
>



More information about the Pgrouting-users mailing list