Расстояние между точками на сфере или эллипсоиде
[
вычисляет длины, arclen
,az
] = distance(lat1
,lon1
,lat2
,lon2
)arclen
, из дуг большого круга, соединяющих пары точек на поверхности сферы. В каждом случае принимается более короткая (минорная) дуга. Функция может также вычислить азимуты, az
, второй точки в каждой паре относительно первой (то есть угла, под которым дуга пересекает меридиан, содержащий первую точку).
Использование pt1,pt2
обозначение, найти расстояние от Норфолка, Вирджиния (37 ° N, 76 ° W), до мыса Сент-Винсент, Португалия (37 ° N, 9 ° W), как раз за пределами Гибралтарского пролива. Расстояние между этими двумя точками зависит от track
выбрано значение.
arclen = distance('gc',[37,-76],[37,-9])
arclen = 52.3094
arclen = distance('rh',[37,-76],[37,-9])
arclen = 53.5086
Между этими двумя путями различия 1,1992 степеней, или около 72 морских миль. Это составляет около 2% от общего расстояния поездки. Компромисс заключается в том, что за счет этих 72 миль, все путешествие может быть сделано на линии гребня с фиксированным курсом 90 °, из-за востока, в то время как в порядок, чтобы следовать по более короткому пути большого круга, курс должен быть изменен постоянно.
На меридиане и на Экваторе большие круги и линии гребня совпадают, поэтому расстояния одинаковы. Для примера,
% Great circle distance
arclen = distance(37,-76,67,-76)
arclen = 30.0000
% Rhumb line distance arclen = distance('rh',37,-76,67,-76)
arclen = 30.0000
Размер нескалярных координат широты и долготы, lat1
, lon1
, lat2
, и lon2
, должна быть последовательной. Когда задается комбинация скаляра и массива входов, distance
функция автоматически расширяет скалярные входы, чтобы соответствовать размеру массивов.
Чтобы выразить выход arclen
в виде длины дуги в степенях или радианах опускает ellipsoid
аргумент. Это возможно только на сфере. Если ellipsoid
поставляется, arclen
- расстояние, выраженное в тех же модулях, что и большой полуоси эллипсоида. Задайте ellipsoid
как [R 0]
для вычисления arclen
как расстояние на сфере радиуса R
, с arclen
имеющие те же модули, что и R
.
Расчеты расстояния для геодезических систем медленно ухудшаются с увеличением расстояния и могут разрушиться для точек, которые почти антиподальные, а также когда обе точки очень близки к Экватору. В сложение для вычислений на эллипсоиде существует небольшое, но конечное входное пространство, состоящее из пар местоположений, в которых обе точки почти антиподальные, и обе точки падают близко (но не точно на) к Экватору. В этом случае выдается предупреждение и оба arclen
и az
заданы как NaN
для «пар задачи».
Расстояние между двумя точками может быть вычислено двумя способами. Для больших кругов (на сфере) и геодезических (на эллипсоиде) расстояние является самым коротким расстоянием поверхности между двумя точками. Для линий гребня расстояние измеряется вдоль линии гребня, проходящей через две точки, что в целом не является самым коротким расстоянием между ними.
Когда Вы должны вычислить и расстояние и азимут для той же пары (пар) точки, более эффективно сделать так с единственным вызовом кdistance
. То есть используйте
[arclen az] = distance(...);
arclen = distance(...) az = azimuth(...)