Требуется помощь, чтобы разобраться с проекциями (по крайней мере мне так кажется что дело именно в этом).
Делаю вывод тайлов OSM в 3D. Первоначальная цель - натянуть тайлы Mapnik-а (http://tile.openstreetmap.org) на полигоны и вывести их.
Однако возникли “непонятки” в плане преобразования координат.
Вот отсюда http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#lon.2Flat_to_tile_numbers_4 я взял формулу определения границ тайлов.
Для масштаба = 2 получаю следующие значения по lat: 85.0511287798
18.5378683367 66.5132604431
66.5132604431 0
66.5132604431 -66.5132604431
18.5378683367 -85.0511287798
Как можно заметить, размеры тайлов в градусах имеют различное значение. При этом сами тайлы имеют фиксированный размер: 256 пикселей. Получается, что крайние тайлы сжаты почти в 3 раза по сравнению со средними.
Мне нужно преобразовать значение по lat так, чтобы карта получилась (в градусах!) квадратная.
Т.е. нужна формула преобразования координаты lat в интервал [-360,360]. Кто-нибудь может помочь и указать эту формулу?
P.S. В ГИС я не силен, поэтому нужна помощь разбирающегося в теме народа.
Так и должно быть.
Точнее, крайние (ближние к полюсам) тайлы оказываются не сжатыми, а растянутыми.
То есть тебя устраивает, что линейные масштабы с севера на юг и с запада на восток будут различаться и одновременно с этим будут сильно искажаться углы?
Если ты хочешь сохранить при этом проекцию меркатора (т.е. ту, в которой строятся тайлы), то это невозможно.
Сначала определись, что тебе нужно:
Проекция, которая сохраняет пропорцию север-юг к запад=восток и при этом сохраняет углы, но гардусы север=юг и запад-восток будут в пропорции отличной от 1 и сам масштаб будет зависеть от широты.
Проекция, которая сохраняет пропорционально градусы, но при этом линейные масштабы в разных направлениях различны и углы сильно деформируются.
PS. Кстати, ГИС тут ни причем, это одна сплошная геометрия.
Проекция Меркатора это всё-таки ближе к ГИС.
Всё остальное я и сам понял, просто формула нужная никак не придумывалась. Теперь всё Ok. Мне нужно было натянуть тайлы OSM на полигоны и вывести. Всё получилось “на ура”.