Рельеф Земли - отклонения геоида: различия между версиями

Материал из Common History development
Перейти к навигации Перейти к поиску
(Формула эллипсоида)
(Формула эллипсоида)
Строка 27: Строка 27:
 
Проверил параметры эллипсоида: [[lw:Earth2014|Earth2014]] использует GRS80, википедия - [[wikipedia:World Geodetic System#A new World Geodetic System: WGS 84|WGS 84]], но радиусы у них идентичны ([[wikiru:GRS80|радиус оси экватора a = 6 378 137,0 м; радиус полярной оси b = 6 356 752,3141 м]]).
 
Проверил параметры эллипсоида: [[lw:Earth2014|Earth2014]] использует GRS80, википедия - [[wikipedia:World Geodetic System#A new World Geodetic System: WGS 84|WGS 84]], но радиусы у них идентичны ([[wikiru:GRS80|радиус оси экватора a = 6 378 137,0 м; радиус полярной оси b = 6 356 752,3141 м]]).
  
Оказалось, что не ту формулу эллипса я взял. Нужно брать http://logy.gq/images/3/3a/EllipsFormula.png (источник [[Hirt, C. and M. Rexer (2015), Earth2014]]) от автора данных [[lw:Earth2014|Earth2014]] - [[Christian Hirt|Кристиана Херта]].
+
Оказалось, что не ту формулу эллипса я взял. Нужно брать http://logy.gq/images/3/3a/EllipsFormula.png из [[Hirt, C. and M. Rexer (2015), Earth2014]].
  
 
== Код ==
 
== Код ==

Версия 00:42, 5 февраля 2019

комментарии в LiveJournal Нарисуем форму Земли математически точно.

Известно, что Земля - это эллипсоид с искажениями. Искажения называются "отклонениями геоида" (по английски "geoid undulations").

Модель геоида[править]

Ожидаемые отклонения геоида 375px-Geoid_EGM96.gif согласно английской и русской википедий находятся в диапазоне 192,4 м от -107 м до +85,4 м.


Погрешностью высоты в 1 м, вызванной выбором модели отклонений геоида, пренебрегаю.

Использование GIS[править]

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

Поэтому рисую карты самодельными алгоритмами.

Земля -

Мерцания на береговых линиях вызваны погрешностями низким разрешением HEALPix k=7 (200 тысяч тазиков). Палитры цветов получены из GRASS: water.png water и модифицированная gyr.png gyr.

Алгоритм[править]

Формула эллипсоида[править]

Беру формулу полярных координатах|эллипса в полярных координатах из википедии - EllipsFormulaWiki.png. Подставляю в данные Earth2014 - и тут меня ожидало разочарование: диапазон отклонений геоида оказался на 50 метров больше ожидаемого. Вместо 192м я получил 250м.

Проверил параметры эллипсоида: Earth2014 использует GRS80, википедия - WGS 84, но радиусы у них идентичны (радиус оси экватора a = 6 378 137,0 м; радиус полярной оси b = 6 356 752,3141 м).

Оказалось, что не ту формулу эллипса я взял. Нужно брать EllipsFormula.png из Hirt, C. and M. Rexer (2015), Earth2014.

Код[править]

Алгоритм расчета отклонений геоида выглядит так:

    protected override double GetAltitude(HealCoor pixel)
    {
        var a = 6378137d; // big axis, angle is measured from here
        var b = 6356752.3141;
        var e_2 = 1 - (b * b) / (a * a);

        var altitude = Relief.GetAltitude(pixel);
        var altitudeShape = ReliefBed.GetAltitude(pixel) + 6371000;

        var angle = Math.PI / 2 - pixel.Theta.Value;
        var sin_2 = Math.Sin(angle) * Math.Sin(angle);
        var ellipsoid = a * Math.Sqrt((1 - e_2 * (2 - e_2) * sin_2) / (1 - e_2 * sin_2));
        var undulation = altitudeShape - ellipsoid - altitude;
        return undulation;
    }

Закладка[править]

При выполнении алгоритма нашел закладку. Я почти отправил Кристиану Херту письмо про как бы ошибку, но подумав, уразумел, что это просто "защита от дурака".

Смысл в том, что представляя данные двумя вариантами: в точности 1 минута дуги и 5 минут дуги, Christian Hirt публикует файлы в равнопромежуточной проекции. А известно, что отклонения геоида версии EGM96 сделаны в сферических функциях. Преобразования между ними нетривиальные, поэтому предполагаю, что для неподготовленной публики он преобразовал EGM96 в равнопромежуточную проекцию красиво 400px-Earth2014_5.jpg, надеясь, что полезные данные в такой точности не будут использоваться из-за искажений 400px-Earth2014_5_shapeError.jpg

Я уже начал сомневаться в выборе проекции HEALPix, но потом глянул данные Earth2014 в точности 1 минута дуги. Оказалось, что там EGM96 преобразована для расчетов правильно 400px-Earth2014_1.jpg, а в равнопромежуточной проекции визуально искажена 400px-Earth2014_1_shapeError.jpg

Мне не нужна равнопромежуточная проекция для расчетов, поэтому использую проекцию HEALPix и данные точностью 1 минута дуги, как и планировалось.

Результат[править]

В разрешении HEALPix k=10 (12,6 миллионов тазиков) диапазон отклонений геоида равен 193,1м от -108.1 м to +85 м

Отличие в 0,8 метр от ожидаемых отклонений объясняю погрешностью преобразования между равнопромежуточной и HEALPix проекциями, которую можно уменьшить, обрабатывая данные Earth2014 в сферических функциях без преобразования проекций, но пока что погрешностью 0,8 метр, вызванной преобразованиями между проекциями, пренебрегаю. Погрешность в 1 м, вызванная выбором модели геоида, не влияет на результат.

Анимация[править]

Представляю Землю, деформированную пропорционально отклонениям геоида. Для наглядности деформации преувеличены в десятки тысяч раз.

Использовалась программа PlanetMaker. Вмятости bumpmap - это отклонения геоида в серых оттенках. Нормали normalmap создал с помощью http://cpetry.github.io/NormalMap-Online на основании bumpmap.

Для наглядности материки и острова появляются в виде белых контуров с заливкой или без. (nightlightsonly).

tags: Earth, planet, geoid, undulations, Земля, форма Земли, планета, геоид, геиод