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

Когда Земля (или другое примерно сферическое тело, такое как Луна) моделируется как сфера, имеющая стандартный радиус, это называется ссылочной сферой. Аналогично, когда модель является сглаженным (посвятившим себя монашеской жизни) эллипсоидом вращения, со стандартной полуглавной осью и стандартным выравниванием инверсии, полунезначительной осью или эксцентриситетом, это называется ссылочным эллипсоидом. Обе модели являются сфероидальными в форме, таким образом, каждый может считаться типом ссылочного сфероида. 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, MeanRadiussurfaceArea, и VolumesurfaceArea и 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Имя, и 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 аналогично не задано.