Перевод из системы координат google maps в меркаторскую
Добавлено: 28 ноя 2008, 17:32
Как из названия снимка Google Maps (например 'trtqsrqrqrrqqqqsqq') получить координаты верхнего левого угла снимка в меркаторовской системе координат?
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
https://gis-lab.info/forum/
Код: Выделить всё
define('tile_size', 256);
function google_name2tile($name)
{
$tile_x = 0;
$tile_y = 0;
$pattern = array('q'=>array(0,0), 'r'=>array(1,0), 't'=>array(0,1), 's'=>array(1,1));
$level = strlen($code);
for($i=1; $i<=$level; $i++)
{
$key = $name{$i};
$tile_x = $tile_x * 2 + $pattern[$key][0];
$tile_y = $tile_y * 2 + $pattern[$key][1];
}
return array($tile_x, $tile_y, $level);
}
function google_tile2bitmap($tile_x, $tile_y)
{
$x = $tile_x * tile_size;
$y = $tile_y * tile_size;
return array($x, $y);
}
function google_bitmap2merkator($x, $y, $level)
{
$merkator_reference = 6371000;
$merkator_size = 2 * M_PI * $merkator_reference;
$num_tiles = pow(2, $level);
$bitmap_size = $num_tiles * tile_size;
$bitmap_center = $bitmap_size / 2;
$pixels_per_merkator_rad = $merkator_size / $bitmap_size;
$merkator_x = $pixels_per_merkator_rad * ($x - $bitmap_center);
$merkator_y = $pixels_per_merkator_rad * ($bitmap_center - $y);
return array($merkator_x, $merkator_y);
}
В первой статье как раз приводится алгоритм расчета географических и меркаторских координат тайлов для Google Map. Единственное, чего там нет - это вычисления номера тайла в ряду-колонке путем разбора адресной строки. Видимо, именно это вас интересует. Эта задача довольно простая, и не разбиралась только потому, что в географических построениях она не первичная - используется, как вы заметили, обратный порядок - по географическим координатам ищутся тайлы, для них рассчитывается и геопривязка, и адрес (буквенное имя). Перестроить расчет адреса наоборот, от буквенного имени к положению в массиве (координатам) несложно и даже забавно, вроде конкурсной задачки, можно заняться. Подробнее ответил вам на Geofaq.vasmt писал(а):Я читал обе статьи - там этого нету.