Hi all,
I use pgrouting 1.02. I have teleatlas table with cost and reverse cost. When I have source cost infinity, my path is not found. Is it normal? Why? If I start my path from source with cost not infinity, path is found.
Thanks
--
Luca Santaniello
email: luca.santaniello@email.it
skype: luca.santaniello
msn: luketto81@hotmail.com
On 1/20/2011 3:24 AM, Luca Santaniello wrote:
Hi all,
I use pgrouting 1.02. I have teleatlas table with cost and reverse cost.
When I have source cost infinity, my path is not found. Is it normal?
Why? If I start my path from source with cost not infinity, path is found.
Hi Luca,
Please provide more information, I'm a little confused by your question.
Cost is normally associated with an edge.
What is your source? an edge or a node?
How are you setting the the cost to infinity? what value are you using?
Can you provide the sql query you are using?
Which solution are you trying? dijkstra, astar, or shootingstar?
Thanks,
-Steve
– Luca Santaniello email: phone: +39 3470373994 skype: luca.santaniello msn:
···
Thanks for reply. I'm using shooting_star alghorithm. My cost is associated with an edge. Many edge have 'infinity' cost (update.... set cost = 'infinity'). I definited wrapper function.
I call my function using this sql:
select * from carto_shootingstar('carto_nw', 456824, 450370, 0.1, 'cost_time', 'reverse_cost_time', true, true)
Thanks
[CODE]
DECLARE
geom_table ALIAS FOR $1;
sourceid ALIAS FOR $2;
targetid ALIAS FOR $3;
delta ALIAS FOR $4;
cost_column ALIAS FOR $5;
reverse_cost_column ALIAS FOR $6;
dir ALIAS FOR $7;
rc ALIAS FOR $8;
rec record;
r record;
path_result record;
v_id integer;
e_id integer;
geom geoms;
srid integer;
source_x float8;
source_y float8;
target_x float8;
target_y float8;
ll_x float8;
ll_y float8;
ur_x float8;
ur_y float8;
query text;
id integer;
BEGIN
id :=0;
FOR rec IN EXECUTE
'select srid(the_geom) from ' ||
quote_ident(geom_table) || ' limit 1'
LOOP
END LOOP;
srid := rec.srid;
FOR rec IN EXECUTE
'select x(startpoint(the_geom)) as source_x from ' ||
quote_ident(geom_table) || ' where gid = '||sourceid
LOOP
END LOOP;
source_x := rec.source_x;
FOR rec IN EXECUTE
'select y(startpoint(the_geom)) as source_y from ' ||
quote_ident(geom_table) || ' where gid = ' ||sourceid
LOOP
END LOOP;
source_y := rec.source_y;
FOR rec IN EXECUTE
'select x(startpoint(the_geom)) as target_x from ' ||
quote_ident(geom_table) || ' where gid = ' ||targetid
LOOP
END LOOP;
target_x := rec.target_x;
FOR rec IN EXECUTE
'select y(startpoint(the_geom)) as target_y from ' ||
quote_ident(geom_table) || ' where gid = ' ||targetid
LOOP
END LOOP;
target_y := rec.target_y;
FOR rec IN EXECUTE 'SELECT CASE WHEN '||source_x||'<'||target_x||
' THEN '||source_x||' ELSE '||target_x||
' END as ll_x, CASE WHEN '||source_x||'>'||target_x||
' THEN '||source_x||' ELSE '||target_x||' END as ur_x'
LOOP
END LOOP;
ll_x := rec.ll_x;
ur_x := rec.ur_x;
FOR rec IN EXECUTE 'SELECT CASE WHEN '||source_y||'<'||
target_y||' THEN '||source_y||' ELSE '||
target_y||' END as ll_y, CASE WHEN '||
source_y||'>'||target_y||' THEN '||
source_y||' ELSE '||target_y||' END as ur_y'
LOOP
END LOOP;
ll_y := rec.ll_y;
ur_y := rec.ur_y;
query := 'SELECT gid, the_geom FROM ' ||
'shortest_path_shooting_star(''SELECT gid as id, source::integer, ' ||
'target::integer, '||cost_column||'::double precision as cost, ' ||
'x1::double precision, y1::double precision, x2::double ' ||
'precision, y2::double precision, rule::varchar, ' ||
'to_cost::double precision ';
IF rc THEN query := query || ' , ' || reverse_cost_column || ' as reverse_cost ';
END IF;
query := query || 'FROM ' || quote_ident(geom_table) || ' where setSRID(''''BOX3D('||
ll_x-delta||' '||ll_y-delta||','||ur_x+delta||' '||
ur_y+delta||')''''::BOX3D, ' || srid || ') && the_geom'', ' ||
quote_literal(sourceid) || ' , ' ||
quote_literal(targetid) || ' , '''||text(dir)||''', '''||text(rc)||''' ),' ||
quote_ident(geom_table) || ' where edge_id = gid ';
FOR path_result IN EXECUTE query
LOOP
geom.gid := path_result.gid;
geom.the_geom := path_result.the_geom;
id := id+1;
geom.id := id;
RETURN NEXT geom;
END LOOP;
RETURN;
END;
[/CODE]
luca.santaniello@email.it
luketto81@hotmail.com
Hi all,
I use pgrouting 1.02. I have teleatlas table with cost and reverse cost.
When I have source cost infinity, my path is not found. Is it normal?
Why? If I start my path from source with cost not infinity, path is found.
Hi Luca,
Please provide more information, I’m a little confused by your question.
Cost is normally associated with an edge.
What is your source? an edge or a node?
How are you setting the the cost to infinity? what value are you using?
Can you provide the sql query you are using?
Which solution are you trying? dijkstra, astar, or shootingstar?
Thanks,
-Steve
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users