Столкновение с картографическими проекциями

Apr 24, 2012 11:40


Последнее время работал с темой, которая меня изрядно напрягла, хотя я с детства любил и карты и тригонометрию со стереометрией; но профессиональных знаний по картографии всё же не хватило.

Свободно доступных SVG-карт не так-то много. Взял вот эту. Встал вопрос: как пересчитывать реальные географические координаты в декартовы координаты этой картинки и обратно? Ясно, что это зависит от использованной на карте проекции. А какая она там, проекция? Неведомо.

Я исходил из оптимистического предположения, что равнопромежуточная коническая. Выбрал опорные точки и принялся подгонять (путь аналитического решения пришлось в конце концов отложить в пользу численного). Какие тут свободные параметры преобразования? Где-то есть полюс - это две координаты на плоскости, два параметра. Третий - масштаб, упрощённо говоря - расстояние между параллелями. Не сразу сообразил, что нулевой мередиан идёт не строго влево, а неизвестно куда, а конус же разворачивается на плоскости в угол не 360 °, а меньший (подгонка дала 293 °). Это ещё два параметра.

Дальше дело застопорилось. Javascript (как и PHP, кстати) и MSO Excel имеют разный порядок аргументов в функции atan2 и по-разному понимают оператор ^ (а это я, конечно, знал, но всё время из головы вылетает). Но и преодолев эти заминки, я продолжал получать искажения в сотни километров.

Уже совершенно интуитивно (что нехорошо, вообще говоря,- следует представлять, что творишь) я догадался добавить ещё один параметр: отступ 90-й параллели от гипотетической точки полюса. После этого всё вроде сошлось, с точностью, которую я посчитал адекватной карте и прицельности моего тыкания мышкой (искажения менее 8 ′ в самом худшем случае). В общем, полюс на этой карте отображается не в точку, а в дугу. Задачу я пока что решил, но понимание того, что это за проекция, совсем утратил. Надеюсь, не потребуется.

работа, география, математика, svg

Previous post Next post
Up