All pastes #822479 Raw Edit

Anonymous

public php v1 · immutable
·published 2007-12-18 19:33 UTC
rendered paste body
<?  $time_start = microtime(true);  include 'db.php';  $con = pg_connect("dbname=".$db." host=".$dbhost." user=".$dbuser." password=".$dbpass)        or die ("PostgreSQL Error --> " . pg_last_error($con));      function RandString($len, $num, $uc, $lc) {      if (!$len || $len<1 || $len>100) {          print "Error: \"Length\" out of range (1-100)<br>\n";          return;      }      if (!$num && !$uc && !$lc) {          print "Error: No character types specified<br>\n";          return;      }        $s="";      $i=0;      do {          switch(mt_rand(1,3)) {              // get number - ASCII characters (0:48 through 9:57)              case 1:                  if ($num==1) {                      $s .= chr(mt_rand(48,57));                      $i++;                  }                  break;                // get uppercase letter - ASCII characters (a:65 through z:90)              case 2:                  if ($uc==1) {                      $s .= chr(mt_rand(65,90));                      $i++;                  }                  break;                // get lowercase letter - ASCII characters (A:97 through Z:122)              case 3:                  if ($lc==1) {                      $s .= chr(mt_rand(97,122));                      $i++;                  }                  break;          }      } while ($i<$len);       return $s;  }    function make_time ($i, $xml) {            $totalsec = $xml->edge[$i]->time;         // echo $totalsec;            if  ( intval ($totalsec) >= 60 )  {            //that means more than 1 minutes             $min_remainder = fmod ((intval ($totalsec)), 60);            $min = intval ((intval ($totalsec)) / 60);          }          else { $min = 0; }                    $sec = round (($totalsec + $min_remainder),0);                      $tajm = $min.":".$sec;                    return $tajm;      }      function compare_angles ($i, $xml) {     if ($xml->edge[$i]->angle == $xml->edge[$i-1]->angle) {       $direction = "Keep moving ".$xml->edge[$i]->angle  ;     }     else $direction = "Turn ".$xml->edge[$i]->angle ;     return $direction  ;  }          function node_details ($i, $tajm, $xml) {          $msg = '<br><b>Next node ('.$i.') :</b> <i>'. compare_angles($i, $xml).'</i> to enter<i> '. $xml->edge[$i]->sname . '</i>. Keep following the road for <i>' .$tajm. ' minutes</i> Remember : Maximum Speed is : <i>' . $xml->edge[$i]->speed . '</i><br><Br>';       return $msg;  }      function randomline ($xml, $i ,$j) {  /*    $xml = the xml     $i = the count we are on    $j = max lines in multilinestring    */  //  echo "MAX LINES IS ".$j;    $sql12 = "select astext ( geometryN ( GeomFromEWKT('".$xml->edge[$i]->wkt."' ), ".$j.") ) as random_line ";  //  echo "Random Linestring : ".$sql12 ;    $sqlq = pg_query ($sql12) or die ("PostgreSQL Error --> " . pg_last_error($con));    $result2 = pg_fetch_assoc($sqlq);    //  print_r ($result2);  //  echo "<BR> =========================================================<br>";    return $result2['random_line'];    //the line referenced  }    function howmanypoints ($line) {  //  $line = the randome line chosen by function randomline     $sql14 = "select numpoints(GeomFromEWKT('".$line."')) as num_of_points";  //  echo "How many poings on line : $sql14 <br>";    $sqlq14 = pg_query ($sql14) or die ("PostgreSQL Error --> " . pg_last_error($con));    $result14 = pg_fetch_assoc($sqlq14);  //  print_r ($result14);      $noofpoints = $result14['num_of_points'];  //   echo "<BR> =========================================================<br>";      return $noofpoints ;       // $noofpoints is returning how many points there are in the linestring  }      function randomgeom ($xml, $i , $num_points_on_line, $the_line_string) {    /*    $xml = the xml edges    $i = the count we are working on    $num_points_on_line = the number of linestrings on the multilinestring we are working on    $the_line_string = the actual linestring we just randomised    */    //randomizing a line number    //  $k = rand(1,$j);  // where $j is the number of how many linestrings there are        // $randomline = randomline($xml, $i, $k);     //$randomline holds a random line out of the lines in a multistring     //$num_points_on_line = howmanypoints($randomline);     // $numpointsonline holds how many points there are on the line       // randomizing a point on the line now       $g = rand(1,$num_points_on_line);       // $g hows the random reference to the random point       // now it is time to get the random point       $sql9 = "select astext ( pointN ( GeomFromEWKT('".$the_line_string."' ), ".$g.") ) as random_point ";  //  echo "Random Point : ".$sql9 ;    $sqlq = pg_query ($sql9) or die ("PostgreSQL Error --> " . pg_last_error($con));    $result9 = pg_fetch_assoc($sqlq);  //  echo "<br> printing result9 </br>";  //  print_r ($result9);    $random_pt = $result9['random_point'];      // $randompt has a random point in text format      return $random_pt;    }    function get_end_point ($xml, $i) {      $sql3 = "select astext( endpoint (  GeomFromEWKT('".$xml->edge[$i]->wkt."') ) ) as end_pt" ;      $sqlq3 = pg_query ($sql3) or die ("PostgreSQL Error --> " . pg_last_error($con));    $result3 =  pg_fetch_assoc($sqlq3) ;  //  print_r ($result3);  //    echo "<BR> =========================================================<br>";       // $result3 holds the ending POINT of the multilinestring       $endpt = $result3['end_pt'];  //   echo "End pt  = ".$endpt;     return $endpt;  }    function get_how_many_linestrings_in_multi ($xml,$i) {      $sql = "select numgeometries(GeomFromEWKT('".$xml->edge[$i]->wkt."'))";  //=  echo "Lines in MultiLIne String $sql <br>";    $sqlq = pg_query ($sql) or die ("PostgreSQL Error --> " . pg_last_error($con));    $result = pg_fetch_assoc($sqlq);  //=  print_r ($result);  //=      echo "<BR> =========================================================<br>";    $j = $result['numgeometries'];    // $j holds how many linestrings there are in the multilinestring    return $j;  }    function compare_random_with_end ($rgeom, $end_pt) {   /*   $rgeom = the random geometric point on the random linestring   $end_point = the ending point of the MULTIlienstring   */        $sql4 = "select distance ( (GeomFromEWKT('".$rgeom."')), (GeomFromEWKT('".$end_pt."')) ) as dist ";  //= echo "$sql4 <br>";    $sqlq4 = pg_query ($sql4) or die ("PostgreSQL Error --> " . pg_last_error($con));    $result4 = pg_fetch_assoc($sqlq4) ;  //=   print_r ($result4);     $dist = $result4['dist'];  //=    echo "<BR> =========================================================<br>";      //$dist holds a t=true / f=false boolean answer from $sql4      return $dist;  }    function doquery ($sleep, $id, $tid, $contents) {      $ip = $_SERVER['REMOTE_ADDR'];      $contentz = 'sleep='.urlencode($sleep) . '&id=' .urlencode($id). '&tid=' .urlencode($tid). '&ip=' .urlencode($ip). '&contents=' .urlencode($contents);      //echo $contents;      $page = 'http://localhost/~yancho/insertscript.php?'.$contentz;      //echo $page;      $fp = fopen ($page , "r");      fgets($fp,1024);      fclose($fp);  }              // End of functions - Start of main routine    $url = "http://127.0.0.1/~yancho/routing.php?startpoint=642568.5%20224590.5&finalpoint=640956%20224283&method=on&region=streets&srid=-1&_=";  $xml = simplexml_load_file($url);    $tid = randstring(20,1,0,1);    setcookie("tid", $tid, time()+1200);      session_start();    //echo "tid is : $tid";  $_SESSION['tid'] = $tid;  //print_r ($_SESSION);  //print_r ($_cookie);   echo "STARTING THE RUN";    $contents = "<br><b>Welcome to this guided tour</b><br>";  doquery(0, 0, $tid, $contents);  $i = 0;    //sleep (2);  // outputting the time + first direction start of journey  //echo date("H:i:s"); // $handle = fopen($filename, "a");  $contents2 = node_details ($i, make_time($i, $xml), $xml );  doquery(2, 1, $tid, $contents2);  $i = 1;    // starting parsing the route  //foreach($xml->edge as $edge){    $k = sizeof($xml->edge);   // echo "THE SIZE OF THE ARRAY : $k";  //ob_start ();  for ($i=2; $i < $k ; $i++) {          // echo "<b>================================++++++++++++++++++++++++++++++=========================================</b>";          // echo "<b><color=red>                       WORKING ON A NEW EDGE!!!!!                   </color></b>";         //  echo "<b>================================++++++++++++++++++++++++++++++=========================================</b>";           //= echo "Check how many linestrings the multilinestring has <br><br>";         //  echo "<br><b><i>WORKING ON EDGE :  ".$xml->edge[$i]->id." WITH THE NAME ".$xml->edge[$i]->sname." </i></b></br></br>";            // Check how many linestrings the multilinestring has         $no_of_linestrings = get_how_many_linestrings_in_multi ($xml,$i);      do {         //=  echo "<br>Randomizings one of the lines in the multiline <br>";          // randomizing one of the lines          $randomline = randomline ($xml, $i ,$no_of_linestrings) ;            //=echo "<br>Checking how many points there are on this linestring <Br>";          // Checking how many points there are on this linestring          $how_many_points_linestring = howmanypoints ($randomline) ;              //=echo "<br>Now we got the line .. time to get a poin on the line <Br>";          // randomizing a point on one of the lines          $rgeom = randomgeom($xml,$i, $how_many_points_linestring,  $randomline );          //=echo "<br>rgeom is : $rgeom <br>";           //$rgeom now holds a random point on a random line string in the multistring we are dealing with                  //=echo "<br>Now getting end pt <Br>";           // now it is time to get the actual ending point of the multi line string             $end_pt =  get_end_point($xml, $i);             //$end_pt has the ending point of the  multilinestring               //= echo "<br>Now comparing both <Br>";           // now we need to compare distance           $dist =  compare_random_with_end ($rgeom, $end_pt);             //$dist holds a t = true .. or an f = false          //= echo "<br><b><i>Booelan Dist is : $dist </i></b><br>";               //sleep(2); //sleeping 20seconds before next randomizing         //  echo "<br>-------------------------------------~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~----------------------<br>";    }    while ( $dist >= 30 );            // we are near 100meters of the ending point .. time to display the new node          //  echo date("H:i:s");            $contents3 =  node_details ($i, make_time($i, $xml), $xml );    // HAWNEKK FEJN HA JIBGHAT ID-DATA LIL-FUNCTION U HA TECHOWJA LINE            doquery (5, $i, $tid, $contents3);     //  ob_flush();    //   flush() ;         /*      if (is_writable($filename)) {                        if (!$handle = fopen($filename, 'a')) {                     echo "Cannot open file ($filename)";                     exit;                }                      // Write $somecontent to our opened file.                if (fwrite($handle, $somecontent) === FALSE) {                    echo "Cannot write to file ($filename)";                    exit;                }                fflush($handle);                fclose($handle);                  }             else {                 echo "The file $filename is not writable";                 } */       sleep (5);     // $i = $i + 1 ;    }  //echo date("H:i:s");  //$handle = fopen($filename, "a");  $contents4 = "<br><b>Welcome to destination - Hope you enjoyed your trip</b>";  /*fwrite($handle, $contents3);  fflush($handle);  fclose($handle);  echo "File written successfully"; */    doquery (5, $k+1, $tid, $contents4);    $time_end = microtime(true);  $time = $time_end - $time_start;  echo "<b><i>SCRIPT TOOK : $time";  ?>