Matlab 大圆距离问题(球面Vincenty情形和简化形式)

Matlab 大圆距离问题(球面Vincenty情形和简化形式),matlab,latitude-longitude,great-circle,Matlab,Latitude Longitude,Great Circle,嘿,伙计们,现在我正试图用MatLab中Vincenty公式的球壳计算出两个纵横点之间的距离。我一直在参考 由此产生了上面的MatLab代码。我尝试了给出的第一个等式(一个更简化的版本,但也没有用),所以我将使用Vincenty案例。给定代码开头列出的两个lat/long点(十进制格式),我还没有用我的程序计算两个点之间的正确距离。我似乎不知道发生了什么,所以我想问你们是否有办法帮我弄清楚 提前非常感谢,我会经常看这篇文章,这样我可以帮助你回答到目前为止关于我代码的任何问题 基于此网站:距离应为

嘿,伙计们,现在我正试图用MatLab中Vincenty公式的球壳计算出两个纵横点之间的距离。我一直在参考

由此产生了上面的MatLab代码。我尝试了给出的第一个等式(一个更简化的版本,但也没有用),所以我将使用Vincenty案例。给定代码开头列出的两个lat/long点(十进制格式),我还没有用我的程序计算两个点之间的正确距离。我似乎不知道发生了什么,所以我想问你们是否有办法帮我弄清楚

提前非常感谢,我会经常看这篇文章,这样我可以帮助你回答到目前为止关于我代码的任何问题

基于此网站:距离应为7381.56公里

下面的第一个答案提醒我,我有映射工具箱,但我不确定如何解释我得到的结果,所以请检查我在下面发布的命令。
[ARCLEN,AZ]=距离(LAT1,LON1,LAT2,LON2)

这实际上是可行的,但我不确定如何处理产生的弧长或方位角


谢谢大家,祝大家新年快乐。

MATLAB中三角函数的默认单位是弧度。您似乎正在以度为单位指定纬度和经度。转换为弧度或使用和函数


或者,如果您碰巧安装了映射工具箱(但是Mathworks会收取额外费用),您可以直接使用该函数。原则上,如果您可以使用distance()函数,那么它实际上应该是最好的方法,因为如果您只需要WGS84的答案,而不需要对 算法,无需支付映射工具箱的费用,下载 Matlab软件包。这 包括对映射工具箱函数的改进, 称为测地距离。来解决你的问题

%Great Circle Distnace -- Simplified
%% 12.18993,133.45898 %% point 1 (lat/long) 
%% 14.34243,65.12750 %% point 2 (lat/long)

%%VARIABLES%%
phi_1=12.18993; %lat_1
phi_2=14.34243; %lat_2
gam_1=133.45898; %long_1
gam_2=65.12750;  %long_2
delt_gam = abs(gam_1 - gam_2); %absoulte difference in longitudes
R_Earth = 6371000; %mean radius of the earth in meters, change to FT to get distance accordingly

%%Unsimplified Great-Circle Equation -- Breaking it up into numerator and
%%denominator sections to avoid more problems -- Spherical Case of the
%%Vincenty Formula
Numer_sec1= ((cos(phi_2))*(sin(delt_gam))^2);
Numer_sec2=(((((cos(phi_1))*(sin(phi_2)))+((sin(phi_1))*(cos(phi_2))*(delt_gam))))^2);
Denom_1= (((sin(phi_1))*(sin(phi_2)))+((cos(phi_1))*(cos(phi_2))*delt_gam));

delt_sig2=atan((sqrt(Numer_sec1+Numer_sec2))/(Denom_1));

delt_GC2=R_Earth*delt_sig2;

disp(delt_GC2)
geoddistance的参数以度为单位,结果为 米。这将对WGS84椭球体进行计算。如果你愿意 要使用差分椭球体,请指定第五个参数[a,e](a) 半径、偏心率)。(对于球体,设置e=0;如果要指定一个长椭球体,请将e设置为纯虚椭球体。将为| e |<0.2返回准确答案。)

顺便说一下,图中显示的许多测地线图片 维基百科上的一篇文章就是这样画的
包。

我使用了距离函数,得到了66.2987的答案,但没有说明椭球地球模型。有没有办法将地球模型按语法包含在距离函数中?此外,66.2987的格式是什么?这是代表它们之间中心角的δ-σ值吗?如果将其乘以地球的平均半径,则得出422390km,这是不正确的。输出单位为度,因此在球形地球模型中计算距离(以km为单位),则取6371*66.2987*3.14159/180=7372.07。在你提供的网站上,如果我让它假设一个球形地球,我得到7367.11公里的距离,或者如果我让它使用WGS84椭球大地水准面,我得到7381.57(你最初引用的值)。球形地球图(7367.11 km)应与MATLAB 7372.07 km的结果相匹配。我不知道你为什么还差5公里,但至少现在你应该比以前更接近目标了。你如何确定WGS84椭球大地水准面?我猜我的错误是我没有除以180得到弧度,doh!!在MATLAB distance()函数中,我相信您只需为椭球体参数指定“wgs84”。有关允许选项的完整列表,请参阅。顺便说一句,distance()似乎只返回弧长,或中的“sigma”。如果你想要真正的大地测量距离(“s”在相同的符号中),我想你可能需要下载并安装。
format long;
geoddistance(12.18993,133.45898,14.34243,65.12750)
->
7381566.23351761