distance between two geo points , I am trying to convert Rhumb lines distance calculation in matlab but it is not work properly

3 次查看(过去 30 天)
I am trying to convert Rhumb lines distance calculation in matlab but it is not work properly can some body help :
%rhumb line
clc
th1=4.385704984670893; % latitude 1
th2=4.382316850229801; % latitude 2
lon1= 100.97986760432356 ; % longitude 1
lon2= 100.96958025244206 ; % longitude 2
Dlon=lon2-lon1;
Dth=th2-th1;
R=6371
LD=log(tan(pi/4+th2/2)/tan(pi/4+th1/2)); % latitude difference
cos(th1)
abs(LD);
q=Dth/LD;
d=sqrt((Dth)^2 + ((q)^2) * (Dlon)^2)*R
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% following is pic of javascript coade and description

回答(1 个)

Raag
Raag 2025-2-5
Hi Abdul,
The issue in calculating the rhumb line distance between two geographical points, seems to arise from the way the differences in longitude and latitude are found, especially when dealing with the 180-degree meridian
Here are steps to resolve the issue :
  • Convert the starting and ending latitudes and longitudes from degrees to radians.
th1 = deg2rad(4.385704984670893);
th2 = deg2rad(4.382316850229801);
lon1 = deg2rad(100.97986760432356);
lon2 = deg2rad(100.96958025244206);
  • Compute the differences in longitude and latitude.
Dlon = lon2 - lon1;
Dth = th2 - th1;
  • Ensure longitude difference takes shortest path possible.
if abs(Dlon) > pi
Dlon = mod(Dlon + pi, 2*pi) - pi;
  • Use the below logarithmic formula to ensure accuracy in computing the latitude difference
LD = log(tan(pi/4 + th2/2) / tan(pi/4 + th1/2))
  • Use the below code snippet, to avoid division by zero
if abs(LD) < 1e-10
q = cos(th1);
else
q = Dth / LD;
end
  • Use the following formula to compute the rhumb line distance
R = 6371;
d = sqrt((Dth)^2 + ((q)^2) * (Dlon)^2) * R;
For a better understanding of the above solution, refer to the following documentations :

类别

Help CenterFile Exchange 中查找有关 Cartesian Coordinate System Conversion 的更多信息

产品


版本

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by