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