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. _______________________________________________ postgis-users mailing list [email protected] http://postgis.refractions.net/mailman/listinfo/postgis-users
