[postgis-users] Correct routing path, segmets of geometry
    paweluz 
    paweluz at o2.pl
       
    Fri Apr 24 06:11:57 PDT 2009
    
    
  
Hi everybody!
First sorry for my poor English. My name is Paul. I have some problem with
the routing. I was doing tutorial form page
http://pgrouting.postlbs.org/wiki/WorkshopFOSS4G2007
http://pgrouting.postlbs.org/wiki/WorkshopFOSS4G2007 
I got pretty good. The results can be see at page:
http://img509.imageshack.us/img509/9250/routing.jpg
http://img509.imageshack.us/img509/9250/routing.jpg 
I you can see, it does work but not to the end. I have to segment the start
end ending geometry. 
Get the right start and end point. I read a lot about this in the Internet.
I found some 
informations. I know that I have to use this 2 functions
line_locate_point();
line_substring();
Then I read more, and I found that I actually cant use them because I don't
have coreect geometry. 
I should have linestring but I have multilinestring - as you can see on the
screen 
http://img22.imageshack.us/img22/2484/dbase900913.jpg
http://img22.imageshack.us/img22/2484/dbase900913.jpg 
So I started to look for other function and I found out about function
'line_interpolate_point'. I 
try to use it but all I got were empty rows. I used like this. 
SELECT line_interpolate_point(GeometryN(the_geom,900913),
line_locate_point(GeometryN(the_geom,900913),PointFromText('POINT(1725140.73233
6788749.88889)'))) 
FROM zielona_gora_routing 
But it gives me only empty rows :( SO I don't know what to do now. I am so
close to the answer but 
I don't know how to get it right. Can anybody please help me. I thinking
that I have to update 
this function
$start = split(' ',$_REQUEST["startpoint"]);
$startPoint = array($start[0], $start[1]);
  // Retrieve end point
$end = split(' ',$_REQUEST["finalpoint"]);
$endPoint = array($end[0], $end[1]);
$startEdge = findNearestEdge($startPoint);
$endEdge   = findNearestEdge($endPoint);
//FUNCTION!!!!!!
unction findNearestEdge($lonlat) {
  	    // Connect to database
    $con = pg_connect("dbname=".PG_DB." host=".PG_HOST." user=".PG_USER);
	$lonlat1=$lonlat[0]-200;
	$lonlat2=$lonlat[1]-200;
	$lonlat3=$lonlat[0]+200;
	$lonlat4=$lonlat[1]+200;
    $sql = "SELECT gid, source, target, the_geom,
			 distance(the_geom, GeometryFromText(
                  'POINT(".$lonlat[0]." ".$lonlat[1].")', 900913)) AS dist
            FROM ".TABLE."
            WHERE the_geom && setsrid(
                  'BOX3D(".$lonlat1."
                         ".$lonlat2.",
                         ".$lonlat3."
                         ".$lonlat4.")'::box3d, 900913)
            ORDER BY dist LIMIT 1";
    $query = pg_query($con,$sql);
    $edge['gid']      = pg_fetch_result($query, 0, 0);
    $edge['source']   = pg_fetch_result($query, 0, 1);
    $edge['target']   = pg_fetch_result($query, 0, 2);
    $edge['the_geom'] = pg_fetch_result($query, 0, 3);
    // Close database connection
    pg_close($con);
    return $edge;
  }
You can see this function in the tutorial that link I gave at the top of
this post. Can anybody please help me. I would really appreciate...
Regards
Paul
-- 
View this message in context: http://www.nabble.com/Correct-routing-path%2C-segmets-of-geometry-tp23216206p23216206.html
Sent from the PostGIS - User mailing list archive at Nabble.com.
    
    
More information about the postgis-users
mailing list