首页 > 解决方案 > deg2km命令不计算matlab中两点之间的距离

问题描述

我正在尝试计算两个地理坐标之间的距离,并且我想将地理坐标转换为公里。因此我使用deg2km了函数。但是,我意识到它不能正确转换积分。

例如,我使用了这两点。

p_x=[5; 10];        %degree
p_y=[8; 16];        %degree
pos_y=deg2km(p_y,6378);
pos_x=deg2km(p_x,6378);

它返回为:

pos_x= [556.58549846099 1113.17099692198]   
pos_y= [890.536797537587 1781.07359507517]

当我计算sqrt((556.5-1113.2)^2+(890.5368-1781.1)^2)这些点之间的距离()时,我得到的距离为:1050.2464

但是我查了一下谷歌地图和其他网站,它应该是1042公里。

你有什么建议来计算距离和正确地以公里为单位吗?

提前致谢!

编辑为:

我有点(度),我需要将它们转换为公里并计算点之间的距离。

LAT=[41.000173;41.010134]*pi/180; 
LON=[28.995882;28.995584]*pi/180;

我用这段代码来计算距离。它计算正确。但我无法将我的积分转换为公里。

LAT=[41.000173;41.010134]*pi/180; 
LON=[28.995882;28.995584]*pi/180;

 R=6378; %km

 for i=1:length(LAT)-1 

psi(i,1) = atan2( sin (LON(i+1)-LON(i)) * cos (LAT(i+1)) , cos (LAT(i)) *sin (LAT(i+1)) - sin (LAT(i)) * cos (LAT(i+1)) * cos (LON(i+1)-LON(i)) );

a=(sin((LAT(i+1)-LAT(i))/2))^2+cos(LAT(i))*cos(LAT(i+1))*(sin((LON(i+1)-LON(i))/2))^2;

c=2*atan2(sqrt(a),sqrt(1-a)); 

d(i,1)=R*c; 

end

标签: matlab

解决方案


推荐阅读