精华内容
下载资源
问答
  • matlab经纬度距离计算,以及将表格数据按类别合并的程序
  • ![图片说明](https://img-ask.csdn.net/upload/201904/25/1556165803_382187.jpg) 请问各位大佬,怎么在MATLAB中怎么计算2个经纬度之间的距离呀?
  • MATLAB中根据两点的经纬度距离

    万次阅读 2020-06-05 11:29:09
    重点是用matlab计算距离得到的单位: %% 初始化参数 clear all; close all; clc; %% 读取两点的坐标 coordinate_a = [39.85929,116.47070]; coordinate_b = [39.04403,121.63660; 26.60968,106.73550; 45.74223...

    重点是用matlab计算距离得到的单位:
     

    %% 初始化参数
    clear all;
    close all;
    clc;
    %% 读取两点的坐标
    coordinate_a = [39.85929,116.47070];
    coordinate_b = [39.04403,121.63660;
        26.60968,106.73550;
        45.74223,126.62370;
        36.62035,114.49450;
        30.37639,120.16980;
        31.890180,117.35390];
    number_b = size(coordinate_b,1)
    %% 计算两点间的距离
    distance_ab = [];
    for i = 1:number_b
        % diatance_a的第一列的单位:度
        distance_ab(i,1) = distance(coordinate_a(1),coordinate_a(2),coordinate_b(i,1),coordinate_b(i,2))
        % diatance_ab_2的第二列单位:千米
        distance_ab(i,2) = distance(coordinate_a(1),coordinate_a(2),coordinate_b(i,1),coordinate_b(i,2))/180*pi*6371;
    end

    计算出的距离结果为:

    其中distance_ab中的第一列的距离单位为度,第二列的距离单位为千米

    展开全文
  • 自己写了一个MATLAB的demo,关于地图之间的gps坐标转换,以及计算gps坐标之间的距离(单位:m)。
  • 根据经纬度计算地球上任意两点间的距离,精度高,GUI界面操作简单,小白可直接使用。
  • 已知两点经纬度 计算距离和方位角(MATLAB实现)

    千次阅读 热门讨论 2020-08-10 20:42:38
    1.已知两点经纬度表示,计算两点间距离以及方位角(近似两点连线的航向角) 2. 已知一个基准点,另一个点距离基准点的距离和初始方位角,计算另一个点的经纬坐标。 % Algorithm Studio % Author : Cl

    本文将参考文件:http://www.movable-type.co.uk/scripts/latlong-vincenty.html 当中的计算公式和java代码用MATLAB语言实现,然后进行了实际计算。将结果与一个名称为gpscalc工具的计算结果进行对比,结果一致。该方法计算两种情况:

    1.已知两点经纬度表示,计算两点间距离以及方位角(近似两点连线的航向角);
    2. 已知一个基准点,另一个点距离基准点的距离和初始方位角,计算另一个点的经纬坐标。

    %                   @
    %                  @@@
    %                 @@@@@
    %                @@@@@@@
    %               @@@@ @@@@
    %              @@@@   @@@@
    %             @@@@     @@@@
    %            @@@@      @@@@@
    %           @@@@@@@@@@@@@@@@@ 
    %          @@@@@@@@@@@@@@@@@@@
    %         @@@@             @@@@
    %        @@@@               @@@@
    %       @@@@                 @@@@
    %      @@@@                   @@@@
    
    % Algorithm Studio
    % Author : CloudWalker
    % Date: 2020-08-10
    % Email:jordan2333@aliyun.com
    % Function: Example1-根据p1和p2经纬度估算两点的距离和方位角(p1 → p2)%           Example2-根据p1以及航向和距离,计算终点p2的位置以及方位角。
    % Reference: http://www.movable-type.co.uk/scripts/latlong-vincenty.html
    
    digitsOld = digits(10);
    %% Example 1
    % lon1 = deg2rad(104.628601) ; lat1 = deg2rad(29.380394);  %p1	
    % lon2 = deg2rad(104.622673); lat2 = deg2rad(29.371966);   %p2
    lon1 = deg2rad(104.628601) ; lat1 = deg2rad(29.380394);  %p1	
    lon2 = deg2rad(104.628602); lat2 = deg2rad(29.380394);   %p2
    f = 1 /  298.257223563;
    a= 6378137.0;	
    b= 6356752.314245;
    
    L = lon2 - lon1;
    tanU1 = (1-f)*tan(lat1); cosU1 = 1 / sqrt((1 + tanU1*tanU1));sinU1 = tanU1 * cosU1;
    tanU2 = (1-f)*tan(lat2); cosU2 = 1 / sqrt((1 + tanU2*tanU2));sinU2 = tanU2 * cosU2;
    lambda = L;
    lambda_ = 0;
    iterationLimit = 100;
    while (abs(lambda - lambda_) > 1e-12 && iterationLimit>0)
            iterationLimit = iterationLimit -1;
            sinlambda = sin(lambda);
            coslambda = cos(lambda);
            sinSq_delta = (cosU2*sinlambda) * (cosU2*sinlambda) + (cosU1*sinU2-sinU1*cosU2* coslambda) * (cosU1*sinU2-sinU1*cosU2* coslambda);
            sin_delta = sqrt(sinSq_delta);
            if sin_delta==0 
                   return 
            end
            cos_delta = sinU1*sinU2 + cosU1*cosU2*coslambda;
            delta = atan2(sin_delta, cos_delta);
            sin_alpha = cosU1 * cosU2 * sinlambda / sin_delta;
            cosSq_alpha = 1 - sin_alpha*sin_alpha;
            cos2_deltaM = cos_delta - 2*sinU1*sinU2/cosSq_alpha;
            C = f/16*cosSq_alpha*(4+f*(4-3*cosSq_alpha));
            lambda_ = lambda;
            lambda = L + (1-C) * f * sin_alpha * (delta + C*sin_delta*(cos2_deltaM+C*cos_delta*(-1+2*cos2_deltaM*cos2_deltaM)));
    end
    uSq = cosSq_alpha * (a*a - b*b) / (b*b);
    A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));
    B = uSq/1024 * (256+uSq*(-128+uSq*(74-47*uSq)));
    delta_delta = B*sin_delta*(cos2_deltaM+B/4*(cos_delta*(-1+2*cos2_deltaM*cos2_deltaM)-B/6*cos2_deltaM*(-3+4*sin_delta*sin_delta)*(-3+4*cos2_deltaM*cos2_deltaM)));
    s = b*A*(delta-delta_delta);
    fwdAz = atan2(cosU2*sinlambda,  cosU1*sinU2-sinU1*cosU2*coslambda); %初始方位角
    revAz = atan2(cosU1*sinlambda, -sinU1*cosU2+cosU1*sinU2*coslambda); %最终方位角
    
    %% Example2
    lon1 = deg2rad(104.628601) ; lat1 = deg2rad(29.380394);  %p1	
    alpha_1 = deg2rad(fwdAz * 180 / pi + 360); %  方向角
    s = s; %距离
    
    sin_alpha1 = sin(alpha_1);
    cos_alpha1 = cos(alpha_1);
    
    tanU1 = (1-f) * tan(lat1); cosU1 = 1 / sqrt((1 + tanU1*tanU1)); sinU1 = tanU1 * cosU1;
    delta_1 = atan2(tanU1, cos_alpha1);
    sin_alpha = cosU1 * sin_alpha1;
    cosSq_alpha = 1 - sin_alpha*sin_alpha;
    uSq = cosSq_alpha * (a*a - b*b) / (b*b);
    A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));
    B = uSq/1024 * (256+uSq*(-128+uSq*(74-47*uSq)));
    
    delta = s / (b*A);
    dleta_ = 0;
    while abs(delta-dleta_) > 1e-12
        cos2deltaM = cos(2*delta_1 + delta);
        sin_delta = sin(delta);
        cos_delta = cos(delta);
        delta_delta = B*sin_delta*(cos2deltaM+B/4*(cos_delta*(-1+2*cos2deltaM*cos2deltaM)-B/6*cos2deltaM*(-3+4*sin_delta*sin_delta)*(-3+4*cos2deltaM*cos2deltaM)));
        dleta_ = delta;
        delta = s / (b*A) + delta_delta;
    end
    
    tmp = sinU1*sin_delta - cosU1*cos_delta*cos_alpha1;
    lat2 = atan2(sinU1*cos_delta + cosU1*sin_delta*cos_alpha1, (1-f)*sqrt(sin_alpha*sin_alpha + tmp*tmp)); %目标点纬度
    lon =  atan2(sin_delta*sin_alpha1, cosU1*cos_delta - sinU1*sin_delta*cos_alpha1);
    C = f/16*cosSq_alpha*(4+f*(4-3*cosSq_alpha));
    L = lon - (1-C) * f * sin_alpha *(delta + C*sin_delta*(cos2deltaM+C*cos_delta*(-1+2*cos2deltaM*cos2deltaM)));
    lon2 =roundn(rem((lon1+L+3*pi) ,(2*pi)) - pi, -6);  %normalise to -180...+180 目标点精度
    
    revAz = atan2(sin_alpha, -tmp); %最终方位角
    
    
    展开全文
  • 利用matlab经纬度转换为XYZ坐标,用于相对位置参考和平面制图,精度高,使用方便,可直接在当前程序中调用,仅需配置参考位置,并输入需要转换的经纬度,输出北向夹角和与参考位置之间的距离,采用三角公式计算X、...
  • 知道我方经纬度和相对于敌方的距离及方位角,计算对方经纬度
  • 已知A,B点的经度、纬度、高度,计算A相对于B的北向方位及距离,或者计算B相对于A的北向方位及距离。如果有高度,利用距离和高度再算出俯仰角
  • 经纬度距离换算matlab代码HAB Datacube提取 该项目分为培训和测试任务 训练任务将使用一个包含所有HAB的经纬度,日期和(HAB)计数信息的Groundtruth MATLAB .mat文件。 然后,这会在地面真相文件中的每个样本行生成...
  • 计算两个经纬度距离和角度 matlab

    千次阅读 2020-06-12 19:16:29
    %x=[E1,N1];y[E2,N2])经度 ,纬度 function [distance,deg] = Spherediff(x,y,R) if nargin < 3 R = 6378137; %地球半径 end x = deg2rad(x); %度转弧度 y = deg2rad(y);...DeltaS = acos(cos(x(2))*cos(y(2))*cos...

    %x=[E1,N1];y[E2,N2])经度 ,纬度
    function [distance,deg] = Spherediff(x,y,R)
    if nargin < 3
    R = 6378137; %地球半径
    end
    x = deg2rad(x); %度转弧度
    y = deg2rad(y);
    DeltaS = acos(cos(x(2))*cos(y(2))*cos(x(1)-y(1))+sin(x(2))*sin(y(2)));
    distance = R * DeltaS; %米
    DeltaA = atan((x(1)-y(1))*cos(y(2))/(y(2)-y(1)));
    deg = mod(DeltaA * 180/pi+360,360); %度

    展开全文
  • 经纬度计算距离,经纬度计算距离公式,matlab源码
  • WGS84计算两点经纬度距离

    热门讨论 2009-05-14 14:09:18
    WGS84 计算两点经纬度距离的程序,欢迎下载
  • 利用经纬度计算距离利用经纬度计算距离 利用经纬度计算距离
  • 根据一个给定经纬度的点和距离,进行附近地点查询,计算两点位置的距离,返回两点的距离,单位:公里或千米
  • 计算地球表面两点之间的距离,由它们的纬度-经度对给出。 选择方法一或方法二。方法一采用平面逼近,只针对几十公里以内的点; 方法 2 计算距离较远的点的球面测地距离,但忽略了地球的扁平化。 输出以公里为单位。
  • 根据地球上任意两点的经纬度计算两点间的距离 地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球...

    根据地球上任意两点的经纬度计算两点间的距离

    地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基 准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值)。设第一点A的经 纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90- Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA, MLatA)和(MLonB, MLatB)。那么根据三角推导,可以得到计算两点距离的如下公式:

    C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB)

    Distance = R*Arccos(C)*Pi/180

    这里,R和Distance单位是相同,如果是采用6371.004千米作为半径,那么Distance就是千米为单位,如果要使用其他单位,比如mile,还需要做单位换算,1千米=0.621371192mile

    如果仅对经度作正负的处理,而不对纬度作90-Latitude(假设都是北半球,南半球只有澳洲具有应用意义)的处理,那么公式将是:

    C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)

    Distance = R*Arccos(C)*Pi/180

    以上通过简单的三角变换就可以推出。

    如果三角函数的输入和输出都采用弧度值,那么公式还可以写作:

    C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)

    Distance = R*Arccos(C)*Pi/180

    也就是:

    C = sin(LatA/57.2958)*sin(LatB/57.2958) + cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)

    Distance = R*Arccos(C) = 6371.004*Arccos(C) kilometer = 0.621371192*6371.004*Arccos(C) mile = 3958.758349716768*Arccos(C) mile

    基于此,我用matlab实现编程:

    最后我们不妨再编个程试试,计算全国各省会(含港澳台)之间的直线距离,

    原始数据是这样:

    编程如下:

    输出我们的结果文件,省会城市欧式距离表,打开后如下,单位:/km

    这样,任务就完成啦!

    展开全文
  • % 各地图API坐标系统比较与转换; % WGS84坐标系:即地球坐标系,国际...设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, % 谷歌地图采用的是WGS84地理坐标系(中国范围除外); % GCJ02坐标系:即火星
  • 计算经纬度点之间距离的算法 getDistance(lat1, lng1, lat2, lng2) { const radLat1 = lat1 * Math.PI / 180.0; const radLat2 = lat2 * Math.PI / 180.0; const a = radLat1 - radLat2; con...
  • 小工具, 根据一点的经纬度, 到另外一点的距离, 方位角, 计算另外一点的经纬度.
  • 半正矢公式(haversine equation)用于计算经纬度点的距离,公式为: d=2rargsin⁡(sin⁡2(lat2−lat12)+cos⁡(lat2)cos⁡(lat1)sin⁡2(lon2−lon12))d=2r\operatorname{argsin}(\sqrt{\sin^2(\frac{lat2-lat1}{2})+...
  • 经纬度距离求与正北方向的夹角(方向角): ackage com.liang.test; public class AngleUtil { public static void main(String[] args) { MyLatLng A=new MyLatLng(113.249648,23....
  • WGS84坐标下根据经纬度计算两点之间的距离 Xian80的需要先转化
  • 这些点都是中国地图上的一些点,并且是这些点的经纬度都是已经知道的,大约一共有139个城市
  • 根据计算原理,可知,至少我们需要Height、Altitude、Range这几个数据,才能计算高程,同时还需要知道经纬度、cycle号,pass号,测距改正信息(此处先不做改正,力求简单),波形信息(此处也不谈)等等。...
  • 距离换算成经纬度,有误差。   //将相对于起点的距离转换为经纬度,distance代表到点的距离,angle代表方位角度  private string ConvertDistanceToLogLat(float distance, string logLatPtStr, double angle)...
  • 已知两点经纬度,求距离和方位.Qt中利用C和C++共同实现
  • 如果给定两点坐标(在平面直角坐标系的情况下),设A(x1,y1),B(x2,y2),很容易可以计算两点距离为(x2-x1)^2+(y2-y1)^2的(1/2)次方, 但给定两点真实坐标,如经纬度,就按照如下方法计算:首先不妨假设点A...
  • } /* * 扩充上方函数,加一个壳,使用上方函数记录差值,然后在此函数中累加差值,可以得到实际目标经纬度 */ bool CalTitude(double longitude0, double latitude0, double& longitude1, double& latitude1, ...
  • 参考的文章是美团的距离计算,说的很清晰,感兴趣的朋友可以参考。我自己使用了MATLAB实现了其中的算法。仅供参考,互相学习。 大致地说,这里实现的方法就是通过将经纬坐标转换为三维的以球心为原点的立体坐标计算...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382
精华内容 152
关键字:

matlab计算经纬度距离

matlab 订阅