# Calculate distance between two coordinates with depth

51 views (last 30 days)
Feliciano Döring on 30 May 2018
Answered: Rob Comer on 29 Apr 2022
I need to do what's in the title. I saw a file exchange about calculating the distance between two coordinates, but how would i do it considering the altitude? I have my data in latitude and longitude so i would need something to convert it first, i saw online and doing it one by one would take to long
##### 2 CommentsShowHide 1 older comment
Feliciano Döring on 30 May 2018
Edited: Feliciano Döring on 30 May 2018
I mean 3D,for example if i have the coordinates for latitude, longitude and heigth

Kai Domhardt on 30 May 2018
If I understand your question right, the solution should be to use the Haversine formula to get the 2D distance on the sphere and then use Pythagoras theorem with the difference in altitude.
dist_sphere = haversine(loc1(1:2), loc2(1:2));
delta_altitude = loc1(3)-loc2(3);
dist = sqrt( dist_sphere^2 + delta_altitude ^2 )
Feliciano Döring on 1 Jun 2018
Edited: Feliciano Döring on 1 Jun 2018
Yes, i actually am looking for something to connect directly, i'm dealing with waves inside the earth that travel directly an not through the surface

### More Answers (1)

Rob Comer on 29 Apr 2022
As Dr. Kearney suggested, the Mapping Toolbox can help. If you have it, try using ecefOffset. It computes the 3-D offset vector between two points (or, element-wise, between two sets of points), in an Earth-Centered Earth-Fixed (ECEF) coordinate system. From there, it's just a matter of computing the length of the offset vector to obtain the distance.
[deltaX,deltaY,deltaZ] = ecefOffset(spheroid,lat1,lon1,h1,lat2,lon2,h2);
d = hypot(hypot(deltaX,deltaY),deltaZ);
As the syntax suggests, the points need to be specified relative to a reference spheroid. (In many cases, wgs84ellipsoid will give an appropriate value.) The latitudes and longitudes need to be in degrees, and the height units need to match spheroid.LengthUnit. The h1 and h2 inputs should be heights above the ellipsoid, so if the available altitude values are referenced to something else (e.g., Mean Sea Level or Ground Level), they should be converted first using a geoid model and/or terrain model.