$set_lat2 = 51.3; $set_lng2 = 0.3; $set_img_file = 'test.png'; $set_img_width = 1000; $set_img_height = $set_img_width * (abs($set_lat2 - $set_lat1) / abs($set_lng2 - $set_lng1)); // End of settings if (!mysql_connect($set_db_server, $set_db_user, $set_db_pass)) { die("Error connecting to database\n\n"); } if (!mysql_select_db($set_db_db)) { die("Error selecting database '{$set_db_db}'\n\n"); } $timer = new RunTimer(); $result = mysql_query("SELECT way_id, AsText(way_geom) as way_geom FROM ways WHERE MBRIntersects(GeomFromText('Polygon(({$set_lat1} \n{$set_lng1},{$set_lat2} {$set_lng1},{$set_lat2} {$set_lng2},{$set_lat1} {$set_lng2},{$set_lat1} {$set_lng1}))'), way_geom)"); $count = mysql_num_rows($result); $selecttime = $timer->get_runtime(); echo "Time to execute select: {$selecttime} seconds. {$count} records returned.\n"; $im = imagecreate($set_img_width, $set_img_height); $bgcolor = imagecolorallocate($im, 255, 255, 255); $node_color = imagecolorallocate($im, 0, 0, 0); while ($row = mysql_fetch_array($result)) { $points = explode(",", substr($row['way_geom'], 11, -1)); $lastx = 0; $lasty = 0; for ($loop = 0; $loop < sizeof($points); $loop++) { $lldata = explode(" ", $points[$loop]); $x = intval(($lldata[1] - $set_lng1) * ($set_img_width / ($set_lng2 - $set_lng1))); $y = $set_img_height - intval(($lldata[0] - $set_lat1) * ($set_img_height / abs($set_lat2 - $set_lat1))); if ($loop > 0) { imageline($im, $lastx, $lasty, $x, $y, $node_color); }
} mysql_query(substr($query, 0, -2)); } if (!empty($tags)) { $query = 'INSERT INTO `tags_to_ways` (`tag_id`, `way_id`) VALUES '; foreach ($tags as $tag) { $query .= '(' . $tag . ', ' . $way['id'] . '), '; } mysql_query(substr($query, 0, -2)); } } } $reader->close(); mysql_query("UNLOCK TABLES"); mysql_close(); echo 'Done in ' . $runtimer->get_runtime() . ' seconds, using ' . round(memory_get_peak_usage() / 1024) . "KB.\n"; class TagFinder { private $tagcache = array(); private $hit = 0; private $miss = 0; public function hits() { return $this->hit; } public function misses() { return $this->miss; } public function find_tag($name, $value) {