[pgrouting-users] very hight costs

Pedro Costa pedrocostaarma at sapo.pt
Wed Jun 13 03:21:22 PDT 2012



I'm trying to add a route layer to mapserver but I can't solve a problem.

This works in my database:


SELECT *
    FROM arcos
    JOIN
    (
SELECT * FROM shortest_path('
       SELECT id,
           source::int4 AS source,
           target::int4 AS target,
           length*estado_actual.custo AS cost
       FROM arcos, estado_actual
       where arcos.estado_a = estado_actual.id_ea',
       438,439,false,false)) AS rota
    ON
    arcos.id = rota.edge_id



So, in mapfile I add this:

DATA the_geom from

(SELECT *
    FROM arcos
    JOIN
    (
SELECT * FROM shortest_path('
       SELECT id,
           source::int4 AS source,
           target::int4 AS target,
           length*estado_actual.custo AS cost
       FROM arcos, estado_actual
       where arcos.estado_a = estado_actual.id_ea',
       438,439,false,false)) AS rota
    ON
    arcos.id = rota.edge_id) using unique id2


But don't work. I simulate the query in my database replacing DATA for SELECT and I got this error:

ERROR:  subquery in FROM must have an alias
LINE 6: (SELECT *


And I try again like this:


select the_geom from

(SELECT *
    FROM arcos
    JOIN
    (
SELECT * FROM shortest_path('
       SELECT id,
           source::int4 AS source,
           target::int4 AS target,
           length*estado_actual.custo AS cost
       FROM arcos, estado_actual
       where arcos.estado_a = estado_actual.id_ea',
       438,439,false,false)) AS rota
    ON
    arcos.id = rota.edge_id) as foo using unique id2


And give me this error:

ERROR:  syntax error at or near "using"
LINE 19:    arcos.id = rota.edge_id) as foo using unique id2


Can anyone tell me how to solve this problem in the query?

Thanks
















On 11-06-2012 19:08, Stephen Woodbridge wrote:
> This page is in error:
>
> http://www.pgrouting.org/docs/howto/mapserver.html
>
> The result of the dijkstra_sp() function returns a record set like:
>    vertex_id | edge_id | cost
> which does not contain a geometry column.
>
> To get the geometry column which is in your dourol table you need to
> join the results back to that table, change you DATA statement to
> something like:
>
> DATA "the_geom from (
> select b.the_geom, a.* from
>   (SELECT * FROM shortest_path('SELECT gid AS id, source::int4,
>              target::int4, length::double precision AS cost,
>         FROM dourol',3, 7, false, false)) as a
>   dourol b where a.edge_id=b.gid) AS
>               foo using unique gid using srid=-1"
>
> Also for what it is worth, if you are also using OpenLayers, I
> typically write a simple PHP ajax handler to interact with postgresql
> and format the results as XML or JSON then use an OpenLayers geometry
> feature to display the route. This way I compute the route once and
> can pan an zoom on the result in OpenLayers without having to requext
> a new route until I want to change the route. Look at this page to get
> some ideas:
>
> http://gis.imaptools.com/routing/leaddog/?zoom=11&lat=33.86651&lon=35.51184&layers=B0TTTF&start=35.493583%2033.826664&stop=35.565174%2033.864285&method=STS&lang=eng
>
>
> -Steve W
>
> On 6/11/2012 1:59 PM, Pedro Costa wrote:
>> Thank you to all.
>> I resolved with a where statement but i also will try using '-1'.
>> I have another question, anybody know examples of using pgrouting with
>> mapserver?
>> Or know information about that....
>>
>> Thanks
>>
>>
>>
>>
>>
>>
>> On 06/11/2012 06:05 PM, Max Weninger wrote:
>>> Hi
>>>
>>> On Mon, 11 Jun 2012 11:03:33 -0400
>>> Stephen Woodbridge<woodbri at swoodbridge.com> wrote:
>>>> I'm pretty sure TRSP allows -1 for a cost and drops that edge
>>>> internally.
>>> Yes
>>> If you look at the code starting at line 361
>>>
>>> Edges are only "used" if>=0.0
>>>
>>> ...
>>> if(cur_edge.m_dCost>= 0.0)
>>> ...
>>> if(cur_edge.m_dReverseCost>= 0.0)
>>> ...
>>>
>>> Regards
>>>
>>> max
>>>
>>>> -Steve W
>>>>
>>>> On 6/11/2012 10:45 AM, James David Smith wrote:
>>>>> Hi Pedro,
>>>>>
>>>>> Could you someone temporarily remove the roads from the network
>>>>> instead? When you do the select statement to query your network, you
>>>>> could do a WHERE statement which ignores certain roads?
>>>>>
>>>>> Might not work, just thinking out loud....
>>>>>
>>>>> James
>>>>>
>>>>>
>>>>>
>>>>> On 11 June 2012 15:40, Pedro Costa<pedrocostaarma at sapo.pt> wrote:
>>>>>> Em 11-06-2012 15:38, Steve Horn escreveu:
>>>>>>> high cost (such as 99999999
>>>>>>
>>>>>> Hello Steve,
>>>>>>
>>>>>> With me the hight cost is a problem because my network have few
>>>>>> roads....
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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
>>> _______________________________________________
>>> 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