Esempio n. 1
0
$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)
    {