Ссылочные сфероиды

Когда Земля (или другое примерно сферическое тело, такое как Луна) моделируется как сфера, имеющая стандартный радиус, это называется ссылочной сферой. Аналогично, когда модель является сглаженным (посвятившим себя монашеской жизни) эллипсоидом вращения, со стандартной полуглавной осью и стандартным выравниванием инверсии, полунезначительной осью или эксцентриситетом, это называется ссылочным эллипсоидом. Обе модели являются сфероидальными в форме, таким образом, каждый может считаться типом ссылочного сфероида. Mapping Toolbox™ поддерживает несколько представлений для ссылочных сфероидов: referenceSphere, referenceEllipsoid, и объекты oblateSpheroid, и более старое представление, вектор эллипсоида.

Объекты referenceSphere

При использовании строго сферической модели необходимо обычно использовать объект referenceSphere (несмотря на то, что и referenceEllipsoid и oblateSpheroid могут представлять совершенную сферу).

По умолчанию referenceSphere возвращает сферу безразмерной единицы:

referenceSphere
ans = 

referenceSphere with defining properties:

          Name: 'Unit Sphere'
    LengthUnit: ''
        Radius: 1

  and additional properties:

    SemimajorAxis
    SemiminorAxis
    InverseFlattening
    Eccentricity
    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

Можно запросить определенное тело по наименованию, и радиус будет исчисляться в метрах по умолчанию:

earth = referenceSphere('Earth')
earth = 

referenceSphere with defining properties:

          Name: 'Earth'
    LengthUnit: 'meter'
        Radius: 6371000

  and additional properties:

    SemimajorAxis
    SemiminorAxis
    InverseFlattening
    Eccentricity
    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

Можно сбросить единицу длины при желании (и радиус повторно масштабируется соответственно):

earth.LengthUnit = 'kilometer'
earth = 

referenceSphere with defining properties:

          Name: 'Earth'
    LengthUnit: 'kilometer'
        Radius: 6371

  and additional properties:

    SemimajorAxis
    SemiminorAxis
    InverseFlattening
    Eccentricity
    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

или задайте единицу длины во время конструкции:

referenceSphere('Earth','km')
ans = 

referenceSphere with defining properties:

          Name: 'Earth'
    LengthUnit: 'kilometer'
        Radius: 6371

  and additional properties:

    SemimajorAxis
    SemiminorAxis
    InverseFlattening
    Eccentricity
    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

Любая единица длины, поддержанная validateLengthUnit, может использоваться. Множество сокращений поддерживается для большинства единиц длины, видит validateLengthUnit для полного списка.

Одна вещь отметить о referenceSphere состоит в том, что только свойства определения отображены в порядке уменьшать помеху в командной строке. (Этот подход сохраняет небольшое количество вычисления также.), В частности, не пропускайте зависимые свойства SurfaceArea и Volume, даже при том, что они не отображены. Площадь поверхности сферической наземной модели, например, легко получена через свойство SurfaceArea:

earth.SurfaceArea
ans =
   5.1006e+08

Этот результат находится в квадратных километрах, потому что свойство LengthUnit объектной земли имеет значение 'kilometer'.

При программировании с Mapping Toolbox это может помочь иметь в виду, что referenceSphere на самом деле включает все геометрические свойства referenceEllipsoid и oblateSpheroid (SemimajorAxis, SemiminorAxis, InverseFlattening, Eccentricity, Flattening, ThirdFlattening, и MeanRadius, а также SurfaceArea и Volume). Ни одно из этих свойств не может быть установлено на referenceSphere, и у некоторых есть значения, которые фиксируются для всех сфер. Eccentricity всегда является 0, например. Но они обеспечивают гибкую среду для программирования, потому что любое геометрическое вычисление, которое принимает referenceEllipsoid, также запустится правильно, учитывая referenceSphere. Это - тип полиморфизма в который различная поддержка классов общие, или строго перекрывающиеся интерфейсы.

Объекты referenceEllipsoid

При использовании сжатого сфероида, чтобы представлять Землю (или другое примерно сферическое тело), необходимо обычно использовать объект referenceEllipsoid. Важное исключение происходит при определенных небольших проекциях карты, многие из которых заданы только на сфере. Однако все важные проекции, используемые для крупномасштабной работы, включая Меркаторский Поперечный и Ламберт Конформное Коническое сечение, заданы на эллипсоиде, а также сфере.

Как referenceSphere, referenceEllipsoid возвращает сферу безразмерной единицы по умолчанию:

referenceEllipsoid
ans = 

referenceEllipsoid with defining properties:

                 Code: []
                 Name: 'Unit Sphere'
           LengthUnit: ''
        SemimajorAxis: 1
        SemiminorAxis: 1
    InverseFlattening: Inf
         Eccentricity: 0

  and additional properties:

    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

Более обычно вы запросили бы определенный эллипсоид по наименованию, приведя к объекту с полуглавными и полунезначительными свойствами осей в метрах. Например, следующее возвращает referenceEllipsoid с настройками свойства SemimajorAxis и InverseFlattening, которые совпадают с параметрами определения Геодезической Ссылочной Системы 1980 (GRS 80).

grs80 = referenceEllipsoid('Geodetic Reference System 1980')
grs80 = 

referenceEllipsoid with defining properties:

                 Code: 7019
                 Name: 'Geodetic Reference System 1980'
           LengthUnit: 'meter'
        SemimajorAxis: 6378137
        SemiminorAxis: 6356752.31414036
    InverseFlattening: 298.257222101
         Eccentricity: 0.0818191910428158

  and additional properties:

    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

В целом необходимо использовать ссылочный эллипсоид, соответствующий геодезической данной величине, к которой ссылаются на координаты данных. Например, эллипсоид GRS 80 задан для использования с координатами, на которые ссылаются к североамериканской Данной величине 1 983 (NAD 83).

Как в случае referenceSphere, можно сбросить единицу длины при желании:

grs80.LengthUnit = 'kilometer'
grs80 = 

referenceEllipsoid with defining properties:

                 Code: 7019
                 Name: 'Geodetic Reference System 1980'
           LengthUnit: 'kilometer'
        SemimajorAxis: 6378.137
        SemiminorAxis: 6356.75231414036
    InverseFlattening: 298.257222101
         Eccentricity: 0.0818191910428158

  and additional properties:

    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

или задайте единицу длины во время конструкции:

referenceEllipsoid('Geodetic Reference System 1980','km')
ans = 

referenceEllipsoid with defining properties:

                 Code: 7019
                 Name: 'Geodetic Reference System 1980'
           LengthUnit: 'kilometer'
        SemimajorAxis: 6378.137
        SemiminorAxis: 6356.75231414036
    InverseFlattening: 298.257222101
         Eccentricity: 0.0818191910428158

  and additional properties:

    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume

Любая единица длины, поддержанная validateLengthUnit, может использоваться.

Отображение командной строки включает четыре геометрических свойства: SemimajorAxis, SemiminorAxis, InverseFlattening и Eccentricity. Любая пара этих свойств, целый по крайней мере один является длиной оси, достаточно, чтобы полностью задать сжатый сфероид; эти четыре свойства составляют взаимно зависимый набор. InverseFlattening параметров и Eccentricity как набор не достаточны, чтобы задать эллипсоид, потому что оба - безразмерные свойства формы. Ни один из тех параметров не обеспечивает шкалу расстояний, и, кроме того, взаимно зависит: ecc = sqrt((2 - f) * f).

Кроме того, существует пять зависимых свойств, которые не отображены в порядке уменьшать помеху на командной строке: Flattening, ThirdFlattening, MeanRadius, SurfaceArea и Volume. SurfaceArea и Volume работают одинаково как их дубликаты referenceSphere. Продолжать предыдущий пример, площадь поверхности эллипсоида GRS 80 в квадратных километрах (потому что LengthUnit является 'kilometer'), легко получено можно следующим образом:

grs80.SurfaceArea
ans =
   5.1007e+08

Смотрите страницу с описанием referenceEllipsoid для определений свойств формы, допустимых значений для свойства Name и информации о свойстве Code.

Мировая геодезическая система 1984

Частично благодаря широкому использованию американской Системы глобального позиционирования (GPS) NAVSTAR, которая связывается к Мировой Геодезической Системе 1984 (WGS 84), эллипсоид ссылки WGS 84 часто является соответствующим выбором. И для удобства и для скорости (полученный путем обхода шага поиска по таблице), это - хорошая идея в этом случае, чтобы использовать функцию wgs84Ellipsoid, например,

wgs84 = wgs84Ellipsoid;

Предыдущая строка эквивалентна:

wgs84 = referenceEllipsoid('wgs84');

но легче ввести и быстрее запуститься. Можно также задать единицу длины. wgs84Ellipsoid(lengthUnit), эквивалентно referenceEllipsoid('wgs84',lengthUnit), где lengthUnit является любой стоимостью единицы, принятой функцией validateLengthUnit.

Например, следование за двумя командами показывает, что площадь поверхности эллипсоида WGS 84 является немногим более, чем 5 x 10^14 квадратные метры:

s = wgs84Ellipsoid
s = 

referenceEllipsoid with defining properties:

                 Code: 7030
                 Name: 'World Geodetic System 1984'
           LengthUnit: 'meter'
        SemimajorAxis: 6378137
        SemiminorAxis: 6356752.31424518
    InverseFlattening: 298.257223563
         Eccentricity: 0.0818191908426215

  and additional properties:

    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume
s.SurfaceArea 
ans =    

   5.1007e+14 

Векторы эллипсоида

Вектор эллипсоида просто 2 1 двойной из формы: [semimajor_axis eccentricity]. В отличие от сфероидального объекта (любой экземпляр referenceSphere, referenceEllipsoid или oblateSpheroid), вектор эллипсоида не самодокументирует. Векторы эллипсоида даже не идентифицируют себя. Необходимо знать, что данным 2 1 вектор является действительно вектор эллипсоида, чтобы сделать любое использование из него. Это представление не подтверждает тот semimajor_axis, действительно и положителен, например, необходимо сделать такие валидации для себя.

Много функций тулбокса принимают векторы эллипсоида как вход, но такие функции признают, что сфероидальные объекты также и, по причинам только утвердили, сфероидальные объекты рекомендуются по векторам эллипсоида. В случае, если вы записали собственную функцию, которая требует вектора эллипсоида, как введено или получила такую функцию от кого-то еще, обратите внимание, что можно легко преобразовать любой сфероидальный объект s в вектор эллипсоида можно следующим образом:

[s.SemimajorAxis s.Eccentricity]

Это означает, что можно создать сфероидальный объект, использующий любого из этих трех конструкторов класса или функцию wgs84Ellipsoid, и вручить от результата в форме вектора эллипсоида при необходимости.

Объекты oblateSpheroid

oblateSpheroid является суперклассом referenceEllipsoid. Объект oblateSpheroid точно так же, как объект referenceEllipsoid минус его Code, Name и свойства LengthUnit. На самом деле первичная роль класса oblateSpheroid должна обеспечить чисто геометрические свойства и поведения, необходимые классу referenceEllipsoid.

В большинстве целей можно просто проигнорировать это различие и сам класс oblateSpheroid, как внутренний состав программного обеспечения. Никакой вред не появится, потому что объект referenceEllipsoid может сделать что-либо и использоваться где угодно, что oblateSpheroid может.

Однако можно использовать oblateSpheroid непосредственно при контакте с вектором эллипсоида, который испытывает недостаток в указанном имени или единице длины. Например, вычислите объем эллипсоида с полуглавной осью 2 000 и эксцентриситетом 0,1, как показано в следующем.

e = [2000 0.1];
s = oblateSpheroid;
s.SemimajorAxis = e(1);
s.Eccentricity = e(2)
s.Volume
s = 

oblateSpheroid with defining properties:

        SemimajorAxis: 2000
        SemiminorAxis: 1989.97487421324
    InverseFlattening: 199.498743710662
         Eccentricity: 0.1

  and additional properties:

    Flattening
    ThirdFlattening
    MeanRadius
    SurfaceArea
    Volume


ans =

   3.3342e+10

Конечно, поскольку единица длины e не задана, модуль s.Volume аналогично не задан.