0
%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)

嘿伙计们,所以目前我正在尝试使用 MatLab 中的文森蒂公式的球形案例来确定两个纬度/经度点之间的距离。我一直在参考http://en.wikipedia.org/wiki/Great-circle_distance

并由此创建了上述 MatLab 代码。我尝试了给出的第一个方程(一个更简化的版本,但也无济于事),所以我将使用 Vincenty 案例。鉴于代码开头列出的两个纬度/经度点(十进制格式),我还没有用我的程序计算两个点之间的正确距离。我似乎无法找出发生了什么,所以我问你们是否有任何方法可以帮助我解决这个问题。

提前非常感谢您,我会经常查看该帖子,以便通过回答您迄今为止对我的代码可能有的任何问题来帮助您。

根据这个网站:http : //williams.best.vwh.net/gccalc.htm 距离应该是7381.56km。

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

这确实有效,但我不确定我对产生的弧长或方位角做了什么。

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

4

2 回答 2

1

MATLAB 中三角函数的默认单位是弧度。您似乎正在以度数指定纬度和经度。要么转换为弧度,要么使用sind()cosd()函数。

或者,如果您碰巧安装了映射工具箱(不过,Mathworks 确实会为此收取额外费用),您可以只使用distance()函数。如果您可以使用 distance() 函数,原则上它实际上应该是更好的方法,因为它可以接受椭球地球模型

于 2014-01-03T03:42:41.003 回答
1

如果您只是想获得 WGS84 的答案,而不需要对算法进行编程,也不需要为 Mapping Toolbox 付费,请下载 Matlab 软件包Geodesics on an ellipsoid of revolution。这包括对 Mapping Toolbox 功能的改进,称为 geoddistance。解决您的问题

format long;
geoddistance(12.18993,133.45898,14.34243,65.12750)
->
7381566.23351761

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

顺便说一句,维基百科关于椭球测地线的文章中显示的许多测地线图片都是用这个包绘制的。

于 2014-01-03T17:13:25.220 回答