Расстояние между точками сферы или эллипсоида
[ вычисляет длины, 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(...)