代码之家  ›  专栏  ›  技术社区  ›  Eghbal

计算两个坐标(纬度和经度)之间距离的MATLAB函数

  •  1
  • Eghbal  · 技术社区  · 9 年前

    如何使用MATLAB R2015a(以米为单位)计算两个世界地图坐标(纬度和经度)之间的距离?

    2 回复  |  直到 9 年前
        1
  •  4
  •   dpmcmlxxvi    9 年前

    如果您无法访问MATLAB映射工具箱,则可以使用 Haversine 公式以下是链接摘录:

    哈弗辛公式是一个在导航中很重要的公式,它给出了球体上两个点之间从经度和纬度的巨大圆距离。这是球面三角中一个更一般的公式的特例,即哈弗辛定律,它涉及球面三角形的边和角。

    Here 是一个MATLAB实现:

    function rad = radians(degree) 
    % degrees to radians
        rad = degree .* pi / 180;
    end; 
    
    function [a,c,dlat,dlon]=haversine(lat1,lon1,lat2,lon2)
    % HAVERSINE_FORMULA.AWK - converted from AWK 
        dlat = radians(lat2-lat1);
        dlon = radians(lon2-lon1);
        lat1 = radians(lat1);
        lat2 = radians(lat2);
        a = (sin(dlat./2)).^2 + cos(lat1) .* cos(lat2) .* (sin(dlon./2)).^2;
        c = 2 .* asin(sqrt(a));
        arrayfun(@(x) printf("distance: %.4f km\n",6372.8 * x), c);
    end;
    
    [a,c,dlat,dlon] = haversine(36.12,-86.67,33.94,-118.40); % BNA to LAX
    
        2
  •  1
  •   Ricardo Mendes User1551892    6 年前

    如果您可以访问映射工具箱,则可以在 this 页面可以帮助您。

    在这种情况下,您可以使用函数 distance(LAT1,LON1,LAT2,LON2) 以获得连接两个点的大圆弧的长度(以度为单位)。然后您可以使用 deg2km , deg2nm deg2sm .

    以公里为单位计算距离的一条直线是:

    deg2km(distance(lat1, lon1, lat2, lon2))