Перевод из системы координат 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 писал(а):Я читал обе статьи - там этого нету.