How to calculate the middle point between two points on the Earth in matlab?
    21 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Ray Lee
      
 le 9 Juil 2015
  
    
    
    
    
    Commenté : Ted Shultz
      
 le 20 Août 2019
            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 commentaires
  James Tursa
      
      
 le 9 Juil 2015
				
      Modifié(e) : James Tursa
      
      
 le 9 Juil 2015
  
			Middle point on a great circle arc assuming a sphere? Or something else?
How is your data stored?
Réponse acceptée
  Mohammad Abouali
      
 le 10 Juil 2015
        
      Modifié(e) : Mohammad Abouali
      
 le 10 Juil 2015
  
      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 commentaire
  Ted Shultz
      
 le 20 Août 2019
				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);
Plus de réponses (1)
  Ted Shultz
      
 le 20 Août 2019
        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)
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




