How to calculate the middle point between two points on the Earth in matlab?

조회 수: 27 (최근 30일)
Given the latitudes and longitudes of two points, how to get the middle point efficiently?
My trouble is there are millions of point pairs to calculate....
  댓글 수: 2
Sad Grad Student
Sad Grad Student 2015년 7월 9일
could you give an example of your input and the expected output?
James Tursa
James Tursa 2015년 7월 9일
편집: James Tursa 2015년 7월 9일
Middle point on a great circle arc assuming a sphere? Or something else?
How is your data stored?

댓글을 달려면 로그인하십시오.

채택된 답변

Mohammad Abouali
Mohammad Abouali 2015년 7월 10일
편집: Mohammad Abouali 2015년 7월 10일
Go to this page you will find bunch of useful formula. The one that you are looking for is called "midpoint" on that page. You have the JavaScript code, but implementation is rather easy
% lat1,lat2,lon1,lon2 should be in radian
Bx = cos(lat2) * cos(lon2-lon1);
By = cos(lat2) * sin(lon2-lon1);
latMid = atan2(sin(lat1) + sin(lat2), ...
sqrt( (cos(lat1)+Bx)*(cos(lat1)+Bx) + By*By ) );
lonMid = lon1 + atan2(By, cos(lat1) + Bx);
  댓글 수: 1
Ted Shultz
Ted Shultz 2019년 8월 20일
Here is the matlab code of the formula provided by Mohammad, but all in degrees. Often lat/lon are in degrees, so this nearly identical code my be easier to use.
function [latMid, lonMid] = midpointLatLon(lat1, lon1, lat2, lon2)
% midpoint of two lat long cord on a sphere, all units are deg
Bx = cosd(lat2) * cosd(lon2-lon1);
By = cosd(lat2) * sind(lon2-lon1);
latMid = atan2d(sind(lat1) + sind(lat2), ...
sqrt( (cosd(lat1)+Bx)*(cosd(lat1)+Bx) + By*By ) );
lonMid = lon1 + atan2d(By, cosd(lat1) + Bx);

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Ted Shultz
Ted Shultz 2019년 8월 20일
There is a built in function in the matlab mapping toolbox that does what I think you are looking for: meanm
Mean location of geographic coordinates
Syntax
[latmean,lonmean] = meanm(lat,lon)
[latmean,lonmean] = meanm(lat,lon,units)
[latmean,lonmean] = meanm(lat,lon,ellipsoid)

카테고리

Help CenterFile Exchange에서 Map Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by