Pull to refresh

Comments 51

Картинка большая, так что оставлю ссылку. Наглядно показаны методы проекции карты Земли на плоскость.
UFO just landed and posted this here
у некоторых без поллитры не найдёшь разницы
Пошел искать необитаемый остров.
Действительно :). Перепутал.
Спасибо, исправил.
А для задания проэкций через proj4 наследника IProjection нету? А то в случае экзотики строить уравнения для прямого и обратного пересчета грустно.

И не очень понятно, как решаются прямая и обратная задача, если проекция задается как черный ящик умеющий только пересчитывать координаты?
Со вторым вопросом — разобрался, невнимательно прочитал.
А первый вопрос я что-то не понял — поясните подробнее?
Есть библиотека, Proj4. Там параметры системы координат и проекции задаются одной строкой. (Наверняка есть и другие но эта одна из популярных.) Например можно указать тип проекции, тип геоида/элипсоида, указать параметры элипсоида: большую/малую ось или параметры пересчета системы координат в wgs84.

Тоесть понятно что можно самому составить уравнения для преобразования, и подставить их в соответсвующие функции. Но это может быть довольно муторно. Поэтому хотелось бы иметь некоторую обертку, над proj4 чтобы проекцию и ск задавать как это принято в proj4 и получать из обертки наследников IProjection и ICoordSystem.

Тоесть вот к примеру любимая у нас ск42, или Пулково 42.

Proj4js.defs["EPSG:2167"] = "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=krass +towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1 +units=m +no_defs";

Собственно есть база с описанием различных систем координат и проекций: spatialreference.org так что найти параметры преобразования (+towgs84=24,-123,-94,0.02,-0.25,-0.13,1.1) тип эплисоида (+ellps=krass) тип проекции (+proj=tmerc) нулевой меридиан для ск и т.д. куда как проще чем строить преобразования вручную.

В ручную надо строить систему уравнений для пересчета системы координат по приведенным выше 7 параметрам, и систему уравненй для Transverse Mercator'а для человека, не имеющего специального образования это может затянуться очень на долго.

Точнее я бы не стал строить их вручную, я бы попытался использовать библиотеку для пересчета координат. Но приятнее когда разработчик апи сам поддерживает подобные библиотеки.
Кажется, что человек без специального образования вряд ли столкнётся с какими-то другими эллипсоидами, отличными от WGS 84 :) Поэтому поддержка экзотических геодезических систем в наши планы не входит.
Судя по количеству «памагите» в профильных форумах, множество людей (веб-разработчиков и программистов) как раз сталкиваются с подобными проблемами, не имея для их решения соответствующих знаний. Благо, наследие советской картографии включает в себя данные во множестве местных СК со скрываемыми параметрами, например.

Но лично меня это, скорее, приводит к мысли не о необходимости специального образования (которое тоже основательно сдобрено архаичными догмами), а о необходимости того, чтобы задачи разработки в области (веб-)картографии решали те, кто действительно потратил на изучение вопроса свои силы и время, пусть и не обладая формальным дипломом.
Загляните в раздел «Веб-картография» на гис-лаб, там такого добра чуть не по два раза в день.
Вряд ли им поможет, если мы в JS API сделаем поддержку :)
Им вообще ничего не поможет. :)
Я не случайно привел в качестве примера ск42. Не планируется добавлять, ок значит не планируется.
Изумительный стиль и отличная статья, скажите, 1) Першинги летают по такому же принципу, как ходят суда и 2) почему у выпускников института геодезии и картографии гриф СС.
Я не выпускник института геодезии и картографии, поэтому могу только догадываться :)
МБР наверняка летают по ортодромам, это серьёзно увеличивает дальность полёта. (И вообще, по локсодроме пролететь через полюс не получится, а от России до Штатов лететь надо как раз через полюс.) Насколько я знаю, такие ракеты прокладывают свой курс по звёздам.
Межконтинентальные баллистические ракеты летают по баллистической траектории, как тело, которое брошено под углом к горизонту с некоторым начальным ускорением (которое в случае ракеты длится, пока работают двигатели). Для корректировки движения боеголовки на нисходящей траектории может использоваться одновременно инерциальная система (гироскопы), GPS и сравнение рельефа поверхности с заложенной моделью.

У человека грифа не бывает (только у носителя сведений, то есть документа), у человека — допуск к сведениям. Вы имеете в виду вторую форму допуска? Если да, то потому, что в картографических ведомствах принято до сих пор секретить все подряд, включая гриф СС. А студентам так или иначе с этими сведениями и данными работать приходится в учебном процессе.
Ага, помню обсуждали мы в ГОИН-е с одним начальником возможность использования пьезоманипуляторов для фотографирования земной поверхности и для расчета этой самой возможности надо было знать угол зрения прибора и его разрешение, что очень легко посчитать зная высоту орбиты. На вопрос «Какова сия высота?» он глубоко задумался и сказал, что это секретная информация и добавил: «но могу сказать, что 1 метр поверхности (требуемое разрешение) с этой высоты виден под углом Х (не помню) секунд». На чем и порешили.
UFO just landed and posted this here
Тут уже почти пять лет борются две школы мысли: то ли линейка должна показывать кратчайшее расстояние между двумя точками, то ли расстояние вдоль нарисованной ей линии.

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

А почему так?
Проходил это все 10 лет назад в институте, сейчас вспоминается с большим трудом )

По поводу определения координат на геоиде небольшой вопрос.

Насколько я помню, в мире используют не один геоид. Форма Земли далеко не правильная — это ведь даже не сфера, приплюснутая с полюсов, а чуть ли не картофелина. Поэтому, какой геоид ни рисуй — все равно в одном области он будет хорошо совпадать с реальной поверхностью Земли, а в другой — будет большая погрешность. Соответственно, в свое время СССР использовал геоид Красовского — который лучше совпадал с поверхностью земного шара в восточном полушарии. А американцы, соответственно — свой. И, насколько я понимаю, и сейчас так же обстоит дело? Те же GPS и ГЛОНАСС на разных геоидах работают?

Так вот, вопрос в чем — а насколько большой разлет координат между двумя разными геоидами? Сильно ли влияет на навигацию, на проложение маршрутов?
Чуток запутались в терминах после десяти лет неиспользования.

Геоид — гладкая фигура, описывающая поверхность Земли, слабее всего идеализированная, и аппроксимирующая поверхность Земли с условием, что плоскость геоида всегда ортогональна направлению силы тяжести в окрестности любой точке.
Эллипсоид (вот у Красовского как раз был эллипсоид) — идеализированная модель формы поверхности земли, представленная телом вращения.
Эллипсоид, в свою очередь, может быть референц-эллипсоидом (опять же, случай Красовского) или общеземным эллипсоидом.

Параметры и положение референц-эллипсоида относительно геоида выбираются так, чтобы минимизировать отклонения в пределах одной территории (территории СССР в случае эллипсоида Крассовского и датума Пулково-1942, фиксирующего его положение).
Параметры и положение общеземного эллипсоида выбираются так, чтобы минимизировать ошибку по всей Земле.

Система GPS работает с общеземным эллипсоидом WGS84, система ГЛОНАСС — с общеземным ПЗ-90. Между ними расхождение есть, но оно сравнительно невелико (в масштабах бытовой навигации — особенно). А вот расхождение между общеземным WGS84 и датумом Пулково-1942 (в котором выполнено множество карт бывших социалистических стран, а не только СССР) велико и главное — не постоянно. Потому для конвертирования координат в системе координат СК-42 (эллипсоид Красовского, датум Пулково-1942, поперечная проекция Меркатора, она же — Гаусса-Крюгера с шестиградусными зонами) для разных регионов требуются свои параметры перехода между географическими координатами. Скажем, если взять советскую карту какого-нибудь района Центрального федерального округа в СК-42 и принудительно загрузить ее с неправильным датумом WGS84, она окажется смещена на 120-150 метров.

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

В свою защиту могу сказать, что по образованию я вообще не геодезист. ) Просто учился в геодезическом вузе, и базовые геодезические дисциплины входили в программу, в том числе на военной кафедре.

Вообще, конечно, геодезия и картография — очень интересная штука, и задачи там порой очень нетривиальные. Обыватели обычно не задумываются, насколько сложно вообще карту составить. Да хотя бы просто координаты точки определить, особенно в эпоху «до спутников GPS/ГЛОНАСС.
Я вообще инженер и нигде никогда всему этому специально не учился. Просто интересовался картами, навигацией, шел исключительно от прикладных задач (совместить две и более карт, наложить трек на снимок, наложить точки с какими-то данными на карту и так далее).
Кто не хочет париться с эллипсоидными проекциями, здесь страничка с готовыми реализациями на разных языках — wiki.openstreetmap.org/wiki/Mercator
Когда писал свой «гугл maps» с использованием тайлов гугла (квадратных каринок с картой) — эти формулы идеально подошли.
Даже по приведенной ссылке имеются два варианта проекции — «Меркатор на сфере», используемый, например, Гуглом, и «Меркатор на эллипсоиде WGS84», используемый Openstreetmap, Яндекс и т.п., и если совсем «не париться», то есть определенный риск смешать данные в этих двух проекциях и получить координаты «на деревню, дедушке».
Если я всё правильно понял, то с помощью морского хронометра и обычных часов всё равно довольно точно не выяснишь точно долготу. Всё таки часы должны быть точно настроены на время нулевого меридиана. Потому что часовые пояса сильно разнятся. Таким образом ошибка вычисления долготы будет варьироваться в пределах часового пояса, на который настроены часы.
Ну или любого другого меридиана. В общем нужно точно знать долготу того места, на который настроены часы. Очевидно, что разница в положении Солнца между Питером и Москвой в 12 дня существует, а время фактически одно и то же.
Часовые пояса тут не при чем.
Часы, установленные по местному солнечному (а не поясному) времени в точке с известной долготой позволяют достаточно точно определить разницу по долготе между этой начальной точкой и текущей, если в текущей также засечь момент солнечного полудня.
Поясное время в таких расчетах использовать смысла нет.
Ну я об этом и говорю, просто у автора не указано, что за счёт простых часов из дома, с которыми окажешься на необитаемом острове, погрешность в определении долготы может быть довольно велика. С другой стороны, откуда на необитаемом острове возьмется морской хронометр :) Разве что от средневековых пиратов, которые могли обитать когда-нибудь на необитаемом острове :)
Нет, никакой погрешности не возникает.

Достаточно точно знать, на истинное время какого меридиана настроены ваши часы. Как раз введение часовых поясов серьёзно упрощает в этом месте жизнь.
На самом деле, это не совсем так. Просто надо чуть больше посчитать.

Скажем, дома мы установили часы по поясному времени. Но мы ведь знаем, в каком часовом поясе живем относительно Гринвича действует ли сейчас летнее время?

Скажем, упомянутые Москва и Питер имеют смещение +4 часа и в этом поясе действует летнее время (значит, вычитаем 1 час из смещения), следовательно, в Гринвиче на нулевом меридиане солнечный полдень наступает на три часа позже того времени, которое показывают часы, установленные по Москве/Питеру.

Значит, мы все равно можем посчитать долготу в любой точке. Для чего нужно будет по солнечным часам (палке, воткнутой в землю) засечь солнечный полдень, вычесть из показаний часов те самые три часа разницы с Гринвичем, пересчитать разницу между местным солнечным полднем и полднем в Гринвиче в минуты, умножить на 15 (чтобы получить разницу долготы в минутах) и поделить на 60 с остатком, чтобы получить разницу в градусах и минутах.
Искомая долгота найдена. Точность в большей степени зависит от того, на сколько точно получится определить по самодельным солнечным часам солнечный полдень (самую короткую тень от палки, воткнутой в землю). Повысить точность можно, взяв длинную палку, или используя тень от иного высокого неподвижного предмета с четко отбрасывающей тень острой вершиной.
Все таки на необитаемом острове долготу не определить, если смартфон утонул :) т.к. нужно знать более-менее точное время. Без часов я так понимаю так и не придумали как определять?
Есть некоторые другие методы (не считая GPS и ГЛОНАСС), но они настолько экзотические, что реальнее реанимировать смартфон :)

Галилей, например, разработал метод определения долготы по затмениям спутников Юпитера. Но вряд ли у вас на необитаемом острове окажется телескоп и таблица дат затмений спутников Юпитера :).
Рассказали же в статье прям.
1.Берете палочку (камень, что угодно). С утра начинаете отмечать на земле минимальный уровень тени (насечками или чем). Когда тени опять начнут расти, полдень прошел. На следующий день по уровню определяете полдень.
2.…
3. Профит!
Где профит то, ели вам нужно посчитать разницу между истинным полднем в Гринвиче и на вашем острове? Без часов: варим из песка стекло, собираем телескоп, наблюдаем за спутниками Юпитера…
Не поможет, нужно ещё иметь таблицу затмений спутников Юпитера на каком-нибудь референсном меридиане.
Допустим, с нами Инженер, а у него феноменальная память! Вообще не стоит отправляться в путешествие на необитаемый остров, не взяв с собою химика, биолога, астронома, физика и геолога.
Спасибо за статью, многое прояснила. Вроде теперь я наконец понимаю почему когда летишь в самолете, скажем, из Нью-Йорка в Москву, на карте в самолете твой курс показывают дугой (ортодромой?) чуть ли ни через север Гринландии, а совсем не по прямой. Я правильно понял что это будет кратчайший маршрут vs прямая линия (локсодрома), которая будет прямейшим маршрутом?
если вы эту линию отметите на глобусе, а не на карте в проекции меркатора, то сможете убедиться, что это кратчайшая линия :)
Широты, если я правильно помню, бывают разные: геоцентрические и географические. Совпадают они только в том случае, если используются вычисления на сфероиде. На иллюстрации изображена геоцентрическая на сфероиде, а в реальной жизни (GPS и сами Яндекс.Карты) используются географические на эллипсоиде.
Sign up to leave a comment.

Articles