主要内容

本页采用了机器翻译。点击此处可查看英文原文。

distance

球体或椭球体上两点间的距离

说明

[arclen,az] = distance(lat1,lon1,lat2,lon2) 计算从起点坐标 lat1lon1 到终点坐标 lat2lon2 的大圆弧的弧长 arclen 和方位角 az。该函数采用较短(次要)的大圆弧。此语法参考球体的坐标,并返回 arclenaz 作为球面距离(单位为度)。

示例

[arclen,az] = distance(pt1,pt2) 计算起点坐标为 pt1 与终点坐标为 pt2 之间的弧长及方位角。

此语法等效于 [arclen,az] = distance(pt1(:,1),pt1(:,2),pt2(:,1),pt2(:,2))

[arclen,az] = distance(lat1,lon1,lat2,lon2,ellipsoid) 指定坐标系的参考椭球体。此语法返回参考椭球体半长轴单位中的 arclen

示例

[arclen,az] = distance(pt1,pt2,ellipsoid) 指定坐标系的参考椭球体。此语法返回参考椭球体半长轴单位中的 arclen

[arclen,az] = distance(___,units) 除可包含前文语法中任意组合的输入参数外,还指定了坐标与方位角的角度单位。

[arclen,az] = distance(method,___)(其中方法为 "rh")使用恒向线计算弧长和方位角。method 的默认值为 "gc",该参数通过大圆弧(适用于球体)或大地线弧(适用于椭球体)计算弧长与方位角。

示例

示例

全部折叠

计算纽约市与巴黎之间的球面距离。默认情况下,distance 函数计算大圆距离,并将结果以球面距离(单位为度)的形式返回。

arclen1 = distance(40.71,-74.01,48.86,2.35)
arclen1 = 
52.4971

计算同一对两点之间的恒向线距离。

arclen2 = distance("rh",40.71,-74.01,48.86,2.35)
arclen2 = 
54.6718

通过将参考椭球体作为输入传递给 distance 函数,可将弧长转换为线性距离返回。

创建一个世界大地测量系统 1984 (WGS84) 参考椭球体,其长度单位为米。

wgs84 = wgs84Ellipsoid("m");

求纽约市与巴黎之间的直线距离。当您将参考椭球体指定为 distance 函数的输入时,该函数将返回以椭球体半长轴为单位的线性距离。

d = distance(40.71,-74.01,48.86,2.35,wgs84)
d = 
5.8531e+06

输入参数

全部折叠

起点纬度,指定为标量或数组。

您可以使用标量和数组的组合来指定 lat1lon1lat2lon2,只要这些数组具有相同大小即可。该函数将标量输入扩展为与数组输入相同的大小。

数据类型: single | double

起点经度,指定为标量或数组。

您可以使用标量和数组的组合来指定 lat1lon1lat2lon2,只要这些数组具有相同大小即可。该函数将标量输入扩展为与数组输入相同的大小。

数据类型: single | double

终点的纬度,指定为标量或数组。

您可以使用标量和数组的组合来指定 lat1lon1lat2lon2,只要这些数组具有相同大小即可。该函数将标量输入扩展为与数组输入相同的大小。

数据类型: single | double

终点的经度,指定为标量或数组。

您可以使用标量和数组的组合来指定 lat1lon1lat2lon2,只要这些数组具有相同大小即可。该函数将标量输入扩展为与数组输入相同的大小。

数据类型: single | double

起始点的经纬度,指定为 N×2 数值矩阵,矩阵形式为 [lat1 lon1],其中 lat1lon1 为列向量。

数据类型: single | double

终点的经纬度,指定为形式为 [lat2 lon2]N×2 数值矩阵,其中 lat2lon2 为列向量。

数据类型: single | double

参考椭球体,指定为 referenceSphere 对象、referenceEllipsoid 对象、oblateSpheroid 对象,或形式为 [semimajor_axis eccentricity] 的二元素向量,其中 semimajor_axis 为半长轴长度,eccentricity 为离心率。值 semimajor_axiseccentricity 必须为数据类型 double

角度单位,指定为以下选项之一:

  • "degrees" - 度

  • "radians" - 弧度

数据类型: char | string

连接起点和终点的曲线类型,指定为以下选项之一:

  • "gc" - 对于球体,使用连接两点的圆大圆弧线计算弧长和方位角。对于椭球体,使用连接两点的大地线计算弧长和方位角。

  • "rh" - 使用连接两点的恒向线计算弧长和方位角。

有关恒向线和大圆航线的更多信息,请参阅恒向线与大圆航线的比较

数据类型: char | string

输出参量

全部折叠

弧长,以标量或数组形式返回。

  • 当使用 lat1lon1lat2lon2 指定坐标时,该参数的大小与最大纬度或经度输入的大小一致。

  • 当使用 pt1pt2 指定坐标时,该参数是一个长度为 N 的向量。

arclen 的单位取决于您是否指定参考椭球体作为输入。

  • 当未指定参考椭球体作为输入时,arclen 表示以度为单位的球面距离。可通过使用 units 输入参数返回以弧度为单位的球面距离。

  • 当指定参考椭球体作为输入时,arclen 表示以该椭球体半长轴为单位的线性距离。

数据类型: double

每对点中第二点相对于第一点的方位角,以标量或数组形式返回。方位角是指弧线与包含起始点的经线相交的夹角。方位角以北为起点顺时针测量。

  • 当使用 lat1lon1lat2lon2 指定坐标时,该参数的大小与最大纬度或经度输入的大小一致。

  • 当使用 pt1pt2 指定坐标时,该参数是一个长度为 N 的向量。

本表显示了与正方位和副方位相关的方位角。

罗盘方向方位角

0° 或 360°

东北

45°

90°

东南

135°

180°

西南

225°

西

270°

西北

315°

数据类型: single | double

提示

您可以使用转换函数(如 deg2kmdeg2nm)将球面距离转换为线性距离。

算法

大地线方位角计算的精度会随着两点间距离的增加而降低。此外,当测点位置接近对跖点或赤道时,计算可能会失效。

当指定一个参考椭球体及两个均靠近赤道且近乎对跖的点时,distance 函数会发出警告,并将 arclenaz 同时作为 NaN 的值返回。

版本历史记录

在 R2006a 之前推出