[pgrouting-users] path not found

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