Страница 1 из 1

Перевод из системы координат google maps в меркаторскую

Добавлено: 28 ноя 2008, 17:32
vasmt
Как из названия снимка Google Maps (например 'trtqsrqrqrrqqqqsqq') получить координаты верхнего левого угла снимка в меркаторовской системе координат?

Re: Перевод из системы координат google maps в меркаторскую

Добавлено: 28 ноя 2008, 18:53
Mitrich

Re: Перевод из системы координат google maps в меркаторскую

Добавлено: 28 ноя 2008, 18:59
vasmt
Я читал обе статьи - там этого нету. Во второй статье правда есть обратное преобразование (из географических в google maps), по идее можно от этого получить нужный мне результат.
Но все-таки может у кого-нибудь есть готовый алгоритм перевода?

Re: Перевод из системы координат google maps в меркаторскую

Добавлено: 28 ноя 2008, 19:25
gis
В статье наверно все расписано.

Гугл как раз и использует проекцию Меркатора.

Если Вы имеете в виду UTM, то для "перевода координат" надо воспользоваться программами которые проводят такое преобразование. Делают это все основные ГИС. Можно также воспользоваться программами специализированными - Pinnacle или этой PHOTOMOD GeoCalculator http://www.racurs.ru/?page=323

Для перепроецирования устанавливаете параметры проекций гугл (в статье наверно есть) и целевой проекции.

Re: Перевод из системы координат google maps в меркаторскую

Добавлено: 28 ноя 2008, 19:27
gis
Если нужен алгоритм - смотрите учебники по математической картографии наши или на ангельском в сети можете поискать.

Re: Перевод из системы координат google maps в меркаторскую

Добавлено: 29 ноя 2008, 05:15
denis27
Вот набор функций (на PHP) который вам поможет.

Код: Выделить всё

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);
}

Re: Перевод из системы координат google maps в меркаторскую

Добавлено: 01 дек 2008, 12:35
geologic
vasmt писал(а):Я читал обе статьи - там этого нету.
В первой статье как раз приводится алгоритм расчета географических и меркаторских координат тайлов для Google Map. Единственное, чего там нет - это вычисления номера тайла в ряду-колонке путем разбора адресной строки. Видимо, именно это вас интересует. Эта задача довольно простая, и не разбиралась только потому, что в географических построениях она не первичная - используется, как вы заметили, обратный порядок - по географическим координатам ищутся тайлы, для них рассчитывается и геопривязка, и адрес (буквенное имя). Перестроить расчет адреса наоборот, от буквенного имени к положению в массиве (координатам) несложно и даже забавно, вроде конкурсной задачки, можно заняться. Подробнее ответил вам на Geofaq.