Добрый день.
В библиотеке
GDAL есть скрипт
gdal2tiles.py, который позволяет нарезать изображения на плитки при помощи точек привязки (обычные GPS координаты).
Однако, вся внутренняя кухня (перевод координат и прочее) у этого скрипта завязана на Гугловской проекции
EPSG:3785.
В то же время ясно, что Яндекс.Карты используют проекцию
EPSG:3395.
Что в итоге дает неприятный сюрприз - номера плиток в
EPSG:3785 и
EPSG:3395 попросту не совпадают.
Например, плитка с вот этой координатой [54.99412, 38.026884] (
Ссылка), имеет следующие адреса плиток:
Вендор | Проекция | Z | X | Y | Ссылка на плитку |
---|
Яндекс | EPSG:3395 | 17 | 79381 | 41576 | Ссылка |
---|
Google | 17 | EPSG:3785 | 79381 | 41461 | blob:https%3A//www.google.ru/d8dd7055-2953-4345-82bd-8e3f12b951c3 (Гугл намудрил, но вот тут видно) |
---|
OSM | 17 | EPSG:3785 | 79381 | 41461 | Ссылка |
---|
gdal2tiles | 17 | EPSG:3785 | 79381 | 41461 | Честное слово |
---|
Собственно, смещение выделил.
Понятно, что это из-за того, что в Яндекс.Картах используется
сфероид (EPSG:3395), а в Google, OSM, и gdal2tiles -
сфера (EPSG:3785).
Само-собой видел
этот раздел про пользовательские карты и генерировал плитки через
вот эту программу для нарезки тайлов. Но она работает на десктопе, а не на сервере.
А нужно именно серверное решение. При этом весьма неплохо иметь один набор плиток с возможностью пересчета координат тайлов под разные проекции на клиенте:
- В случае Google, OSM - оставить как есть
- В случае Яндекс.Карт - пересчитать координаты плиток.
Вот и весь сабж.
Может быть есть какие-то готовые решения, библиотеки, хоть что-нибудь?