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