Перевод координат в пиксели относительно плитки
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 11 авг 2023, 10:04
- Репутация: 0
- Откуда: Екатеринбург
Перевод координат в пиксели относительно плитки
Здравствуйте!
Зачитался... Столько у вас тут непонятного ))
Подскажите, пожалуйста!
У меня задача на определенной плитке из Яндекс карт поставить точку.
Координаты точки: [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, чтобы там поставить точку?
Зачитался... Столько у вас тут непонятного ))
Подскажите, пожалуйста!
У меня задача на определенной плитке из Яндекс карт поставить точку.
Координаты точки: [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, чтобы там поставить точку?
-
- Гуру
- Сообщения: 5298
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
-
- Новоприбывший
- Сообщения: 2
- Зарегистрирован: 11 авг 2023, 10:04
- Репутация: 0
- Откуда: Екатеринбург
Re: Перевод координат в пиксели относительно плитки
Спасибо!
Но если честно, я из статьи понял только название.
Нашел более или менее подходящий пример:
$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;
Только он не очень попадает.
Можете подсказать, как его поправить для более точного вычисления?
Но если честно, я из статьи понял только название.
Нашел более или менее подходящий пример:
$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;
Только он не очень попадает.
Можете подсказать, как его поправить для более точного вычисления?
-
- Гуру
- Сообщения: 1195
- Зарегистрирован: 23 апр 2011, 10:32
- Репутация: 205
- Откуда: Ульяновск
Re: Перевод координат в пиксели относительно плитки
У нас есть координаты угла одной плитки, есть координаты угла соседней, между ними получается условно 5 градусов. Размер плитки 256 пикселей. Считаем сколько градусов приходится на 1 пиксель. Считаем сколько пикселей покроют наши требования по смещения на 3 градуса.
-
- Активный участник
- Сообщения: 212
- Зарегистрирован: 11 авг 2015, 16:13
- Репутация: 45
Re: Перевод координат в пиксели относительно плитки
Чисто теоретически посчитать можно, но зачем? Давно существует система PROJ в которой все это уже есть.
https://proj.org/en/9.2/about.html
Если нужно делать из командной строки то используйте приложения
https://proj.org/en/9.2/apps/index.html#apps
Есть там и описание проекции Меркатора для Гугл карт.
Хотите, используйте это описание. Без этого ничего путевого у вас не получится.
https://proj.org/en/9.2/about.html
Если нужно делать из командной строки то используйте приложения
https://proj.org/en/9.2/apps/index.html#apps
Есть там и описание проекции Меркатора для Гугл карт.
Хотите, используйте это описание. Без этого ничего путевого у вас не получится.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя