Пишет slazav ([info]slazav) в [info]slazav_news
@ 2007-06-20 13:34:00
Хакерское: космоснимки
Пытался скачивать и преобразовывать в хорошие проекции снимки с Космоснимки.ру. Скачивать и смотреть в родной проекции - дело нехитрое, а вот с преобразованиями я умучался :)

С первого взгляда кажется все просто: проекция такая же, как в google, масштабы от 3 до 17, в масштабе 3 северо-западная четверть Земного шара -- это 5х5 плиток 256х256, при увеличении масштаба на 1 плитка делится на 4 штуки. (На мелких масштабах отдаются еще и соседние плитки за пределами северо-западной четверти, но это не очень интерено). Адрес плитки (x,y) в масштабе z строится довольно очевидно: "&x=" << (2*x + 1) * (1 << (24-z)) << "&y=" << (2*5*(1 << (z-3)) - 2*yt - 1) * (1 << (24-z)) << "&z=" << z; (координаты центра плитки "в самом крупном масштабе")

А вот дальше оказывается странное. Чтобы все совпало, надо все сжать по горизонтали в 1.04660276128734 раз, а по вертикали -- в 1.05155857168138 раз!

Получил эти замечательные числа методом последовательных приближений... Зато теперь я могу получать картинки в проекции Гаусса-Крюгера, например, для рисования карты ММБ :)

ps. Конечно, я не заметил чего-то простого, а проломился кратчайшим и не слишком красивым путем. Например, интересно, означает ли разница коэффициентов по x и y, что космоснимки (в отличие от google) используют честную проекцию Меркатора?

upd. Все оказалось еще более сложно. Надо дальше разбираться...




(Добавить комментарий)


[info]yurikl
2007-06-20 11:48 pm (local) (ссылка) СтеретьЗаморозитьСкрытьОтслеживать
Хм, забавно. а то, что скачивается и то, что видно на сайте - одинаковое или нужно сжать/растянуть?
И почему считаете, что Google использует нечестную проекцию Меркатора?

(Ответить)(Ветвь дискуссии)


[info]slazav
2007-06-21 02:00 am (local) (ссылка) СтеретьЗаморозитьСкрытьОтслеживать
Скачиваются те же картинки, что и видны на сайте. Проекция, вроде бы, примерно меркатор. Но вот грубо говоря, сколько точек в одном градусе, а может быть и где начало координат - для меня пока загадка. :)

Про google - я точно не уверен.

Их проекция получается из совсем простых соображений: надо широту растянуть так, чтобы масштаб стал одинаковым по всем направлениям. dy = d(lat)/cos(lat). Это очень хорошо работает.

Но как я понимаю, в геодезии широта всегда считается как угол к нормали эллипсоида в точке. И из-за этого градус широты имеет немного разную длину на разных широтах, и это в такой проекции надо учитывать тоже (иначе никаких равных масштабов по всем направлениям не будет).

Но честно сравнивать проекции мне было лень, так что, может, я и ошибаюсь...

(Ответить)(Уровень выше) (Ветвь дискуссии)


(Анонимно)
2007-07-06 01:32 pm (local) (ссылка) СтеретьЗаморозитьСкрытьОтслеживать
http://new.kosmosnimki.ru/map/map.js тут смотрели?

Bushman

(Ответить)(Уровень выше)


(Добавить комментарий)

Групповая операция над выбранными комментариями:


[ В начало | Написать | Ваш журнал | Друзья | Войти/Выход | Поиск | Настройки просмотра | Карта сайта ]