Когда Земля (или другое приблизительно сферическое тело, такое как Луна) моделируется как сфера, имеющая стандартный радиус, она называется эталонной сферой. Аналогично, когда модель представляет собой сплющенный (сплюснутый) эллипсоид вращения со стандартной основной осью и стандартной обратной плоскостью, полуосью или эксцентриситетом, она называется опорным эллипсоидом. Обе модели имеют сфероидальную форму, поэтому каждая может рассматриваться как тип эталонного сфероида. 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 свойство объекта earth имеет значение '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 указан для использования с координатами, относящимися к североамериканскому опорному элементу 1983 года (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, которая привязана к World Geodetic System 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
Volumes.SurfaceArea
ans = 5.1007e+14
Эллипсоидный вектор является просто двойником 2 на 1 вида: [semimajor_axis eccentricity]. В отличие от сфероидного объекта (любой экземпляр referenceSphere, referenceEllipsoid, или oblateSpheroid), эллипсоидный вектор не является самодокументированным. Эллипсоидные векторы даже не являются самоидентифицирующимися. Вы должны знать, что данный вектор 2 на 1 действительно является эллипсоидным вектором, чтобы использовать его. Это представление не проверяет, что semimajor_axis является реальным и положительным, например, вы должны сделать такие проверки для себя.
Многие функции панели инструментов принимают эллипсоидные векторы в качестве входных, но такие функции также принимают сфероидные объекты, и по только что изложенным причинам сфероидные объекты рекомендуются над эллипсоидными векторами. Если вы написали собственную функцию, которая требует эллипсоидного вектора в качестве ввода, или получили такую функцию от кого-то другого, обратите внимание, что вы можете легко преобразовать любой сфероидальный объект s в эллипсоидный вектор следующим образом:
[s.SemimajorAxis s.Eccentricity]
Это означает, что объект spheroid можно построить с помощью любого из трех конструкторов класса или wgs84Ellipsoid и при необходимости сдать результат в виде эллипсоидного вектора.
oblateSpheroid Объекты
oblateSpheroid - суперкласс referenceEllipsoid. Один oblateSpheroid объект подобен referenceEllipsoid объект минус его Code, Name, и LengthUnit свойства. Фактически, главная роль oblateSpheroid класс должен обеспечивать чисто геометрические свойства и поведение, необходимые referenceEllipsoid класс.
Для большинства целей вы можете просто игнорировать это различие, и oblateSpheroid сам класс, как вопрос внутреннего состава программного обеспечения. Никакого вреда не будет, потому что referenceEllipsoid объект может делать все что угодно и использоваться в любом месте, где oblateSpheroid может.
Тем не менее, вы можете использовать oblateSpheroid непосредственно при работе с эллипсоидным вектором, у которого отсутствует указанное имя или единица измерения длины. Например, вычислите объем эллипсоида с большой полуосью 2000 и эксцентриситетом 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 также не указан.