MATLAB:计算数组坐标之外的LatLon距离

时间:2019-07-01 14:24:16

标签: arrays matlab coordinates

我有一个1700 x 3的阵列,其纬度,经度和海拔高度都在米以上。像这样:

51.2551649606487    7.15089717516404    153.110000000000 

51.2552453948075    7.15086528446721    150.160000000000

51.2552903318980    7.15086348124900    150.200000000000

我想使用Haversine公式计算连续的纬度Lon坐标之间的距离,因为我无权访问MATLAB映射工具箱(https://de.mathworks.com/matlabcentral/fileexchange/38812-latlon-distance)。

我的问题是,我应该如何更改给定的代码,以直接从数组中读取所有1700个坐标?

我阅读/检查了以下链接:MATLAB function to calculate distance between two coordinates (latitude and longitude)。但这并没有告诉我如何立即从数组中读取所有1700个坐标。

在此先感谢您谁愿意帮助我!

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,则应该能够将数据分成3 1700 x 1数组:纬度,经度和海拔。然后在这三个数组上应用Haversine公式。 (尽管典型的haversine功能不能说明海拔)

coordinates; %1700 x 3 array
latitudes=coordinates(:,1);
longitudes=coordinates(:,2);
elevations=coordinates(:,3);

lat1=0; %coordinates to compare to
long1=0;

earthRadius=6371000;
a=sind((latitudes-lat1)./2).^2 + cosd(latitudes).*cosd(lat1).*sind((longitudes-long1)./2).^2;
c=atan2(sqrt(a),sqrt(1-a));
distances=c*earthRadius;%in meters