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

Материал из Common History development
Перейти к навигации Перейти к поиску
(Диапазон отклонений геоида)
 
(не показано 65 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
[[Category:Модель рельефа Земли]]
 
[[Category:Модель рельефа Земли]]
{{live|}}
+
{{live|16882}}
 
Нарисуем форму Земли математически точно.  
 
Нарисуем форму Земли математически точно.  
  
 
Известно, что Земля - это эллипсоид с искажениями. Искажения называются "отклонениями [[геоид]]а" (по английски "geoid undulations").
 
Известно, что Земля - это эллипсоид с искажениями. Искажения называются "отклонениями [[геоид]]а" (по английски "geoid undulations").
 
+
= Модель геоида =
Беру формулу [[wikiru:Эллипс#В полярных координатах|эллипса в полярных координатах из википедии]] - [[file:EllipsFormulaWiki.png]]. Подставляю в данные [[lw:Earth2014|Earth2014]] - и тут меня ожидало разочарование: диапазон отклонений геоида оказался на 50 метров больше ожидаемого. Вместо 192м я получил 250м отклонений.
+
Ожидаемые отклонения геоида https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Geoid_EGM96.gif/375px-Geoid_EGM96.gif согласно [https://it.wikipedia.org/wiki/Geoide#/media/File:Geoid_height_red_blue.png английской] и  
 
 
Ожидаемые отклонения геоида согласно [https://it.wikipedia.org/wiki/Geoide#/media/File:Geoid_height_red_blue.png английской] https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Geoid_height_red_blue_averagebw.png/330px-Geoid_height_red_blue_averagebw.png и  
 
 
[https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%B3%D1%83%D1%80%D0%B0_%D0%97%D0%B5%D0%BC%D0%BB%D0%B8#%D0%A1%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F русской] википедий находятся в диапазоне 192,4 м от -107 м до +85,4 м.
 
[https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%B3%D1%83%D1%80%D0%B0_%D0%97%D0%B5%D0%BC%D0%BB%D0%B8#%D0%A1%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F русской] википедий находятся в диапазоне 192,4 м от -107 м до +85,4 м.
  
Проверил параметры эллипсоида: [[lw:Earth2014|Earth2014]] использует GRS80, википедия - WGS84, но радиусы у них идентичны ([[wikiru:GRS80|радиус оси экватора a = 6 378 137,0 м; радиус полярной оси b = 6 356 752,3141 м]]).
+
{{error|1|чем=выбором модели отклонений геоида|от=Earth2014#geoid}}.
 
 
 
 
Оказалось, что не ту формулу эллипса я взял. Нужно брать формулу от автора данных [[lw:Earth2014|Earth2014]] - [[Christian Hirt|Кристиана Херта]].
 
Находится она http://logy.gq/images/3/3a/EllipsFormula.png в файле [http://ddfe.curtin.edu.au/models/Earth2014/Hirt_Rexer2015_Earth2014.pdf Hirt_Rexer2015_Earth2014.pdf].
 
  
 
= Использование GIS =
 
= Использование GIS =
 
Пытался нарисовать карту в [[wikiru:Геоинформационная система|геоинформационной системе]] (называю в дальнейшем GIS).  
 
Пытался нарисовать карту в [[wikiru:Геоинформационная система|геоинформационной системе]] (называю в дальнейшем GIS).  
Использовал бесплатную GIS [[aw:GRASS|GRASS]]. Наткнулся на ограничение: медленное преобразование карт при изменениях [[wikiru:Датум|датума]]. GIS вроде как и поддерживают расчет наклона оси вращения оси, но в GRASS этих настроек не нашел. Также выяснилось, что при интенсивном изменении датума скорость GIS существенно падает. А моделировать изменение скорости и угла вращения Земли нужно обязательно.  
+
Использовал бесплатную GIS [[aw:GRASS|GRASS]]. Наткнулся на ограничение - медленное преобразование карт при изменениях [[датум]]а. GIS вроде как и поддерживают расчет наклона оси вращения оси, но в GRASS этих настроек не нашел. Также выяснилось, что при интенсивном изменении датума скорость GIS существенно падает. А моделировать изменение скорости и угла вращения Земли нужно обязательно.  
  
 
Поэтому рисую карты самодельными алгоритмами.  
 
Поэтому рисую карты самодельными алгоритмами.  
  
Земля [[file:Earth.gif]]
+
Земля - {{githubraw|Wos/mockup/earth.gif|reconstruction}}
  
Мерцания на береговых линиях показывает погрешности [[преобразования между равнопромежуточной и HEALPix проекциями]].
+
Мерцания на береговых линиях вызваны низким разрешением {{sym|letter=k_7|строка=скобки}}.
Палитры цветов получены из [[aw:Heights coloring#GRASS colors|GRASS]]: https://grass.osgeo.org/grass77/manuals/colortables/water.png water и модифицированной https://grass.osgeo.org/grass77/manuals/colortables/gyr.png gyr.
+
Палитры цветов получены из [[aw:Heights coloring#GRASS colors|GRASS]]: https://grass.osgeo.org/grass77/manuals/colortables/water.png water и модифицированная https://grass.osgeo.org/grass77/manuals/colortables/gyr.png gyr.
  
 
= Алгоритм =
 
= Алгоритм =
 +
== [[Формула эллипсоида]] ==
 +
Беру формулу [https://ru.wikipedia.org/wiki/Эллипс#В_полярных_координатах эллипса в [[Полярная cистема координат|полярных координатах]] из википедии] - [[file:EllipsFormulaWiki.png]]. Подставляю в данные [[Earth2014|Earth2014]] - и тут меня ожидало разочарование: диапазон отклонений геоида оказался на 50 метров больше ожидаемого. Вместо 192м я получил 250м.
 +
 +
Проверил параметры эллипсоида: [[Earth2014|Earth2014]] использует GRS80, википедия -  [[Эллипсоид#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]].
 +
 +
== Код ==
 
Алгоритм расчета отклонений геоида выглядит так:
 
Алгоритм расчета отклонений геоида выглядит так:
 
<source lang=CSharp>
 
<source lang=CSharp>
    protected override double GetAltitude(HealCoor pixel)
+
        public override double? GetAltitude(HealCoor basin)
    {
+
        {
        var a = 6378137d; // big axis, angle is measured from here
+
            var altitude = Relief.GetAltitude(basin);
        var b = 6356752.3141;
+
            var altitudeShape = ReliefBed.GetAltitude(basin) + 6371000;
        var e_2 = 1 - (b * b) / (a * a);
 
  
        var altitude = Relief.GetAltitude(pixel);
+
            var thetaTan = Ellipsoid.CalcThetaTan(basin.Beta.Value);
        var altitudeShape = ReliefBed.GetAltitude(pixel) + 6371000;
+
            var undulation = altitudeShape - altitude
 
+
                - Ellipsoid.Radius(Ellipsoid.FromSpheric(thetaTan));
        var angle = Math.PI / 2 - pixel.Theta.Value;
+
            return undulation;
        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;
 
    }
 
 
</source>
 
</source>
  
При его выполнении нашел закладку от [[Christian Hirt|Кристиана Херта]]. Я почти отправил ему письмо про как бы ошибку, но подумав, уразумел, что это просто "защита от дурака".
+
== Закладка ==
 
+
При выполнении алгоритма нашел закладку. Я почти отправил [[Christian Hirt|Кристиану Херту]] письмо про как бы ошибку, но подумав, уразумел, что это просто "защита от дурака".
Смысл в том, что представляя данные двух вариантов: в точности [http://ddfe.curtin.edu.au/models/Earth2014/data_1min/shape_grids 1 минута дуги] и [http://ddfe.curtin.edu.au/models/Earth2014/data_5min/shape_grids 5 минут дуги], [[Christian Hirt]] публикует файлы в [[wikiru:Равнопромежуточная проекция|равнопромежуточной проекции]]. А известно, что отклонения геоида версии EGM96 сделаны в [[wikiru:Сферические функции|сферических функциях]]. Преобразования между ними нетривиальные, поэтому предполагаю, что для неподготовленной публики он преобразовал EGM96 в равнопромежуточную проекцию красиво http://logy.gq/images/thumb/e/ed/Earth2014_5.jpg/400px-Earth2014_5.jpg
 
 
 
Но реально полезные данные из такого изображения в проекции HEALPix будут искажены http://logy.gq/images/thumb/b/b2/Earth2014_5_shapeError.jpg/400px-Earth2014_5_shapeError.jpg
 
  
 +
Смысл в том, что представляя данные двумя вариантами: в точности [http://ddfe.curtin.edu.au/models/Earth2014/data_1min/shape_grids 1 минута дуги] и [http://ddfe.curtin.edu.au/models/Earth2014/data_5min/shape_grids 5 минут дуги], [[Christian Hirt]] публикует файлы в [[wikiru:Равнопромежуточная проекция|равнопромежуточной проекции]]. А известно, что отклонения геоида версии EGM96 сделаны в [[wikiru:Сферические функции|сферических функциях]]. Преобразования между ними нетривиальные, поэтому предполагаю, что для неподготовленной публики он преобразовал EGM96 в равнопромежуточную проекцию красиво http://logy.gq/images/thumb/e/ed/Earth2014_5.jpg/400px-Earth2014_5.jpg, надеясь, что полезные данные в такой точности не будут использоваться из-за искажений http://logy.gq/images/thumb/b/b2/Earth2014_5_shapeError.jpg/400px-Earth2014_5_shapeError.jpg
  
Я уже начал сомневаться в выборе проекции HEALPix для расчетов.
+
Я уже начал сомневаться в выборе проекции HEALPix, но потом глянул данные [[Earth2014|Earth2014]] в точности [http://ddfe.curtin.edu.au/models/Earth2014/data_1min/shape_grids 1 минута дуги].
 +
Оказалось, что там EGM96 преобразована для расчетов правильно http://logy.gq/images/thumb/5/5b/Earth2014_1.jpg/400px-Earth2014_1.jpg, а в равнопромежуточной проекции визуально искажена http://logy.gq/images/thumb/4/47/Earth2014_1_shapeError.jpg/400px-Earth2014_1_shapeError.jpg
  
Но потом глянул данные [[lw:Earth2014|Earth2014]] в точности [http://ddfe.curtin.edu.au/models/Earth2014/data_1min/shape_grids 1 минута дуги].
+
Мне не нужна равнопромежуточная проекция для расчетов, поэтому использую проекцию HEALPix и данные точностью [http://ddfe.curtin.edu.au/models/Earth2014/data_1min/shape_grids 1 минута дуги], как и планировалось.
Оказалось, что там EGM96 преобразована для расчетов правильно http://logy.gq/images/thumb/5/5b/Earth2014_1.jpg/400px-Earth2014_1.jpg, а в равнопромежуточной проекции отклонения геоида визуально искажены http://logy.gq/images/thumb/4/47/Earth2014_1_shapeError.jpg/400px-Earth2014_1_shapeError.jpg
 
  
= Диапазон отклонений геоида =
+
== Результат ==
В точности [[lw:HEALPix|HEALPix]] k=10 (12,6 миллионов тазиков) диапазон отклонений геоида [[lw:file:Earth2014 1min lines2048.jpg|равен 195,]] от -107.4м до +88.1м
+
Для {{sym|HEALPix#13_миллионов|строка=скобки}} диапазон отклонений геоида [[lw:file:Earth2014 1min lines2048.jpg|равен 193,]] от -108.1 м to +85 м
  
Отличие в 3,1 метра от ожидаемых отклонений объясняю погрешностью [[преобразования между равнопромежуточной и HEALPix проекциями]] до 3 метров и погрешностью данных проекта [[lw:Earth2014|Earth2014]] до 1 метра. {{error|3|метра|чем=преобразованиями между проекциями|от=преобразования между равнопромежуточной и HEALPix проекциями}}. {{error|1|чем=выбором модели отклонения геоида|от=Геоид#Точность}} тоже, и эта погрешность не зависит от данного [[#Алгоритм|алгоритма]].
+
Отличие в 0,8 метр от [[#Модель геоида|ожидаемых отклонений]] объясняю погрешностью [[преобразования между равнопромежуточной и HEALPix проекциями]], которую можно уменьшить, обрабатывая [[Earth2014#spectral modelling|данные Earth2014 в сферических функциях]] без преобразования проекций, но пока что {{error|0,8|м|чем=преобразованиями между проекциями|от=преобразования между равнопромежуточной и HEALPix проекциями|case=lc}}. Погрешность в 1 м, вызванная выбором [[#Модель геоида|модели геоида]], не влияет на [[#Результат|результат]].
  
 
= Анимация =
 
= Анимация =
Для наглядности представляю вращающуюся Землю с преувеличенными отклонениями поверхности, пропорциональными отклонениям геоида.
+
Представляю [[Земля, деформированная пропорционально отклонениям геоида|Землю, деформированную пропорционально отклонениям геоида]]. Для наглядности деформации преувеличены в десятки тысяч раз.
 
 
[[]]
 
 
 
  
# тоже самое - [https://en.wikipedia.org/wiki/Geoid#Spherical_harmonics_representation geoid undulations, using units of gravity] https://upload.wikimedia.org/wikipedia/commons/5/56/Geoids_sm.jpg
+
Использовалась программа [[aw:PlanetMaker|PlanetMaker]]. Вмятости bumpmap - это отклонения геоида в серых оттенках. Нормали normalmap создал с помощью http://cpetry.github.io/NormalMap-Online на основании bumpmap.
#: [https://en.wikipedia.org/wiki/Geoid#Spherical_harmonics_representation Spherical harmonics are often used to approximate the shape of the geoid. The current best such set of spherical harmonic coefficients is EGM96... equation describes the Earth's gravitational potential V, not the geoid itself]
 
  
 +
Для наглядности материки и острова появляются в виде белых контуров с заливкой или без. (nightlightsonly).
  
=== ===
+
<img src=https://github.com/it4history/reconstruction/blob/master/Wos/mockup/geoid1_part.gif?raw=true >
[[aw:PlanetMaker]]
 
нормали создал с помощью http://cpetry.github.io/NormalMap-Online
 
  
вмятости - это отклонения геоида в серых оттенках
+
{{#widget:YouTube|id=2tMwfFj1Mq0}} {{#widget:YouTube|id=qEP2uPQcc4c}}
  
для совмещения с контурами материков добавил карту earth_nightlightsonly_2048x1024.gif
+
tags: Earth, planet, geoid, undulations, Земля, форма Земли, планета, геоид, геиод

Текущая версия на 20:03, 22 апреля 2020

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

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

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

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


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

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

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

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

Земля - earth.gif

Мерцания на береговых линиях вызваны низким разрешением [math]k_7[/math] (HEALPix 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.

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

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

        public override double? GetAltitude(HealCoor basin)
        {
            var altitude = Relief.GetAltitude(basin);
            var altitudeShape = ReliefBed.GetAltitude(basin) + 6371000;

            var thetaTan = Ellipsoid.CalcThetaTan(basin.Beta.Value);
            var undulation = altitudeShape - altitude 
                - Ellipsoid.Radius(Ellipsoid.FromSpheric(thetaTan));
            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 минута дуги, как и планировалось.

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

Для [math]k_{10}[/math] (HEALPix 13 миллионов) диапазон отклонений геоида равен 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, Земля, форма Земли, планета, геоид, геиод