Перевод координат в пиксели относительно плитки

Системы координат, проекции, преобразования, привязка
Ответить
Dotha
Новоприбывший
Сообщения: 2
Зарегистрирован: 11 авг 2023, 10:04
Репутация: 0
Откуда: Екатеринбург

Перевод координат в пиксели относительно плитки

Сообщение Dotha » 11 авг 2023, 10:30

Здравствуйте!
Зачитался... Столько у вас тут непонятного ))
Подскажите, пожалуйста!
У меня задача на определенной плитке из Яндекс карт поставить точку.

Координаты точки: [56.908761,62.032097]
$zoom = 6
$lat = 56.908761
$lon = 62.032097

По формуле вычисляю плитку:
$xTile = floor((($lon + 180) / 360) * pow(2, $zoom));
$yTile = floor((1 - log(tan(deg2rad($lat)) + 1 / cos(deg2rad($lat))) / pi()) / 2 * pow(2, $zoom));

$xTile = 43
$yTile = 19
Сравнивал на карте, плитка находится именно та.

Размер плитки 256 на 256 пикселей.

Вопрос:
Как мне узнать, сколько в пикселях нужно отступить на этой плитке x и y, чтобы там поставить точку?
Изображение

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Перевод координат в пиксели относительно плитки

Сообщение trir » 11 авг 2023, 10:58


Dotha
Новоприбывший
Сообщения: 2
Зарегистрирован: 11 авг 2023, 10:04
Репутация: 0
Откуда: Екатеринбург

Re: Перевод координат в пиксели относительно плитки

Сообщение Dotha » 11 авг 2023, 14:30

Спасибо!
Но если честно, я из статьи понял только название.
Нашел более или менее подходящий пример:

$n = 256 * pow(2, $zoom);
$pixelX = ($latLon[1] + 180.0) / 360.0 * $n;
$pixelX = $pixelX % 256;

$pixelY = (1 - log(tan(deg2rad($latLon[0])) + 1 / cos(deg2rad($latLon[0]))) / pi()) / 2 * $n;
$pixelY = $pixelY % 256;

Только он не очень попадает.
Можете подсказать, как его поправить для более точного вычисления?

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Перевод координат в пиксели относительно плитки

Сообщение freeExec » 18 авг 2023, 07:20

У нас есть координаты угла одной плитки, есть координаты угла соседней, между ними получается условно 5 градусов. Размер плитки 256 пикселей. Считаем сколько градусов приходится на 1 пиксель. Считаем сколько пикселей покроют наши требования по смещения на 3 градуса.

konst555
Активный участник
Сообщения: 212
Зарегистрирован: 11 авг 2015, 16:13
Репутация: 45

Re: Перевод координат в пиксели относительно плитки

Сообщение konst555 » 18 авг 2023, 08:02

Чисто теоретически посчитать можно, но зачем? Давно существует система PROJ в которой все это уже есть.

https://proj.org/en/9.2/about.html

Если нужно делать из командной строки то используйте приложения

https://proj.org/en/9.2/apps/index.html#apps

Есть там и описание проекции Меркатора для Гугл карт.
Хотите, используйте это описание. Без этого ничего путевого у вас не получится.

Ответить

Вернуться в «Координаты и привязка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей