Let's say we hike a mile straight up or down a 30 degree slope. I know this is almost dangerously steep, but the numbers work easy.

If I accurately pace my distance. But on the map, I've only moved .87 miles. Which will the GPS show? My impression is it will show the mile.

If I marked the start as a waypoint and I hiked in a straight line, will the distance to the waypoint show as .87 miles or 1 mile?

This only matters over long distances. The Appalacian Trail is 2,187 miles long. Is that according to the map? Or is that according to miles walked. If the average slope is 7 degrees, there is a 10% difference.

I would think horizontal distance. Based on several satallites the GPS should be capable of measuring the distance on the slope, but I am not sure all GPS units are that sophisticated. If it gave you slope distance than that would not match the map that is shown on your GPS screen.

I would be really surprised if the GPS did not give you the full mile. GPS locates you 3-dimensionally. It would be shear laziness on the part of the programmers not to use the info. I would also think reported trail miles are actual miles and typically not numbers measured off a map. What about the topo map tools some people use? It too should also be able to use elevation change to calculate actual miles covered.

[quote=wandering_daisy]I would think horizontal distance. Based on several satallites the GPS should be capable of measuring the distance on the slope, but I am not sure all GPS units are that sophisticated. If it gave you slope distance than that would not match the map that is shown on your GPS screen. [/quote]

But if it does not give you the slope distance, it will not match the distance you hike. With a GPS in a car, the distance traveled matches the odometer with a correction for the percent the odometer is off.

I think I'm going to have to go climb a mountain and see. Yet, as you say, if it does it that way, it will not match the map.

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

A GPS, does not add elevation profiles to your distance, it measures point to point.

You could climb a ladder that's a mile high and still not have moved a bit from your starting lat/long, and your GPS will tell you that have traveled zero feet, as it should.

The GPS measures what you have traveled. I can go down a series of switchbacks and drop 1,000 feet and it will tell me how far I've gone on the trail - it's more than it would tell me if I had not walked all those switchbacks and just slid down a pole. It leaves breadcrumbs and measures speed as well as time.

I suppose I could do an experiment - throw the GPS off a hill and go get it at the bottom, and see what it tells me, then walk back up the slope and compare the two. But it's not going to short you because the distance is not linear.

_________________________
"In the beginner's mind there are many possibilities. In the expert's mind there are few." Shunryu Suzuki

To calculate actual distance (d) off of a topo map. Determine the horizontal distance taveresed (x), count up the number of contour lines you cross (n), and the vertical distance between each contour line (h). Plug into this equation:

d = x/sin(arctan(n*h/x))

if you don't like arctan and sin's you can use the alternate formulation:

d = square root(x^2 + (n*h)^2)

With topo map software you could easily develop a cubic spline algorithm to get a more accurate estimate of distance traversed. I would be surprised if commercially available topo software didn't include that feature.

I doubt you have driven your car straight down a 30 degree slope! So that is not a good test.

Switchback vs straight down is not the question. Switchbacks will show up as horizontal variation with associated distance.

The question is the gometry of slope distance (triangle hypotenes) vs horizontal distance (long limb of triangle adjacent to the right angle).

If the "bread crumbs" are recorded as lat/long or equivelent, you get horizontal distance- the shorter distance.

By the way I am not a GPS user, just have done surveying in the past. A GPS seems to have the capability to triangulate and calculate slopes, but I do not think that is necassarily what you get when it tells you the distance. It is NOT what you get if the distance is shown on the screen (flat surface). Does your GPS have an option to give you both? You can probably find out if you read your users manual in detail or call the manufacturer.

[quote=billstephenson]A GPS, does not add elevation profiles to your distance, it measures point to point.

You could climb a ladder that's a mile high and still not have moved a bit from your starting lat/long, and your GPS will tell you that have traveled zero feet, as it should. [/quote]

GPS most certainly does measure elevation (its not as accurate as longitude and latitude though!). Whether you are delivering bombs to a target or airplanes to a runway, the elevation is very important. See how smooth of a landing a plane would have trying to land at sea level at Denver International Airport. Horizontal distance traversed has very little meaning outside a 2-dimensional map.

I got my ladder out. Marked the bottom as a waypoint and climbed the ladder. It showed the distance to the waypoint as 9 feet. I climbed up and down 3 times and it showed my distance traveled as 31 feet and the distance to the waypoint as 31 feet even though I was standing at the waypoint.

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

W_D has it right. I've worked with the data files a GPS records, distance is measured with a series of lat/long points.

You can adjust the distance between recorded points on most GPS units, and the finer grain you select provides a more accurate account of the distance you've traveled.

A GPS can also record an elevation profile. This will show you the ups and downs you traveled, but that is not the same as the distance you traveled.

Distance is measured on a two dimensional plane. If you view an elevation profile on a graph you'll see the miles shown on the graph are not adjusted to elevation.

They are not adjusted on for elevation on your GPS track either, but that's as it should be. If you buy a square mile of land the boundaries would be pretty wonky if they took terrain into account when measuring the mile. There are old jokes about getting more land for your money here in the Ozarks based on that.

Many GPS units have a "Measuring tool" built in. It will show you the distance between your location and the curser on the screen. You can use that to see how the topography is not accounted for when displaying the distance between to points.

Registered:
Posts: 5808
Loc: Gateway to Columbia Gorge

I've been having fun with distance estimates in local guidebooks (Mt. Hood and Columbia River Gorge). Most of the printed guidebooks agree within 0.2 mile, but the distances shown in the PortlandHikers.org Field Guide definitely vary from the printed guidebooks, many up to half a mile less. Most of the distances in the online Field Guide were measured with a GPS.

Hard telling who's right, but some of the folks who did the measuring for the Field Guide admit that GPS readings underestimate the distance!

I personally don't and won't use a GPS. It's just another gadget that needs batteries and can malfunction. I've gotten along just fine with map and compass (plus looking for landmarks, old USFS blazes, etc.) for 67 years now. Besides, I'm still trying to figure out the directions for my 4-year-old digital camera!

Edited by OregonMouse ()

_________________________
May your trails be crooked, winding, lonesome, dangerous, leading to the most amazing view--E. Abbey

You should have read Gershon's reply above you before you replied. When you buy a 40 of land it is 1/4 mile by 1/4 mile on a 2-d map (or aerial projection). If you walk your entire boundary it will be farther than 1 mile and the surface area of your 40 will be more than 40 acres. In deed I once looked into purchasing a piece of land. It was a 40 with a small chunk cut out where somebody built a house. So it was less than a proper 40 but it was advertised as 42 acres.

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

[quote]I got my ladder out. Marked the bottom as a waypoint and climbed the ladder. It showed the distance to the waypoint as 9 feet. I climbed up and down 3 times and it showed my distance traveled as 31 feet and the distance to the waypoint as 31 feet even though I was standing at the waypoint.[/quote]

That sounds right. My GPS gives an estimate of accuracy for the lat/long it displays. On a good day it's about 12 ft.

Same with elevation.

If you stand still and watch it, you can see the accuracy readings fluctuate as satellites come in and out of range.

[quote=billstephenson] What is it you think am I missing? [/quote]

Wow... so if I understand you correctly, you believe Gershon's reading are a result of inaccuracy in his GPS? Is that correct, so I assume you believe his results would have been the same if he had stood at the bottom of the ladder for the same amount of time as it took him to climb up and down 3 times? You sure are stubborn Bill.

Gershon, would you mind repeating your experiment? Apparently Bill is still unconvinced that GPS's calculate actual distance traversed. Set a way point and stand their for a couple minutes. Report the distance traveled. Climb up and down the ladder three times and report the distance traveled. Then stand there a couple more minutes and report the distance traveled. Here are my predictions for the three readings: (1) 0-3 feet, (2) 25 - 31 feet, (3) 0-3 feet.

[quote=billstephenson] Gershon's experiment shows the inaccuracy, he pointed it out.

[/quote]

He walked 30 feet to get there!!! He is climbing up and down a ladder. As he is climbing up and down his distance traveled is increasing, even though he hasn't moved inch in terms of lat. and long.

At the end of his experiment the GPS said he had traveled 31 feet. It didn't say he was 31 feet from his original way point. Ooooh... that would be another way to verify what you are saying is wrong. If his results were due to inaccuracy, it would say he is 31 feet from his way-point. I bet it says he is right on top of his way-point.

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

[quote= BZH]To calculate actual distance (d) off of a topo map....

d = x/sin(arctan(n*h/x))

if you don't like arctan and sin's you can use the alternate formulation:

d = square root(x^2 + (n*h)^2)[/quote]

Let's go back to that.

That math is way over my head but writing the code to use is not. I'll have to take a look at the data file my GPS exports, but if it does record elevation with the lat/long in the track logs then could you write a formula to account for that?

I should point out that I don't think it's beyond the GPS/GIS technologies capability to do what Gershon wants, it's just not how it is approached and implemented. There are some logical reasons behind the approach used.

But for our purposes, the total distance walked would be more accurate if it included the difference in elevation between the points. And knowing the total ups and downs, which I can do if the elevation is there, would also be interesting to know.

That math is way over my head but writing the code to use is not. I'll have to take a look at the data file my GPS exports, but if it does record elevation with the lat/long in the track logs then could you write a formula to account for that?

I should point out that I don't think it's beyond the GPS/GIS technologies capability to do what Gershon wants, it's just not how it is approached and implemented. There are some logical reasons behind the approach used.

But for our purposes, the total distance walked would be more accurate if it included the difference in elevation between the points. And knowing the total ups and downs, which I can do if the elevation is there, would also be interesting to know.

[/quote]

Sure... The equation for linear distance between two points in 3-d space is:

d = sqrt(deltax^2 + deltay^2 + deltaz^2)

you would calculate deltax as the difference in latitude between points, deltay as the difference in longitude, and deltaz as the difference in elevation.

That would be the linear approach (assuming you walked in a straight between successive points). I could develop an algorithm the plots a smooth curve over all the data points and then calculates distance traveled from their. I'd have to think about that a bit more. In 2-d space it would be called a cubic spline.

If the GPS has two lat/long coordinates, each with an elevation, and stores this data it capable of calculating the actual distance walked from point A to B, but apparently Garmin does NOT. You get horizontal distance. Then you download the data and convert to the hyoptonuse distance as a post processing function. Of course you only get the distance between measured points, so if you are not on continuous data gathering, you get a choppy set of numbers. There are tons of calculation algorithms out there on the internet that convert.

There may be some GPS units that have a chip inside that converts, thus allowing you to choose how you want distance presented. I suspect most do not simply because there appear to be many different ways to calculation depending what you want to measure. Anyway Gershon needs to look in his manual and see if there is a setting that allows one or the other.

[quote]The equation for linear distance between two points in 3-d space is:

d = sqrt(deltax^2 + deltay^2 + deltaz^2)

you would calculate deltax as the difference in latitude between points, deltay as the difference in longitude, and deltaz as the difference in elevation.

That would be the linear approach (assuming you walked in a straight between successive points). I could develop an algorithm the plots a smooth curve over all the data points and then calculates distance traveled from their. I'd have to think about that a bit more. In 2-d space it would be called a cubic spline.[/quote]

Ooh, pick me!

d = Integral[dt sqrt((dx/dt)^2 + (dy/dt)^2 + (dz/dt)^2)]

where dx/dt is your speed in the latitudinal direction, etc.

I used to get in fights with my boyfriend when his GPS distance didn't match the distance I estimated from the map. Nice to have some backup on why.

We have the lat, long, elevation, and a timestamp to work with.

I'm not sure what format the elevation is in. It can't be feet above sea level because I haven't been that low for a long time, so it must be meters.

We also have to look up how to calculate feet using the lat/lon method shown. I think I might have the math for that in some code I was playing with for my radar web app.

I think it'd be fun to give it shot. You're never going to be boots on the ground accurate with the civilian grade GPS we have now, but it'd be fun to measure distance with a home rolled algorithm

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

Below is a perl script that will process track data exported from a Garmin GPS using Garmin's BaseCamp software.

Lines that start with a "#" are comments I've made to help explain the logic flow

I've added the routines to count the total elevation gain and loss (Up and Down) and the necessary variables are loaded to do the math to calculate the total on the ground mileage for a track. All we need is the math.

If you guys can show me how to do that I'll try and write the code for it.

---------- code starts below ----------

#!/usr/bin/perl

############################################################# ############################################################# # # Calc Miles Hiked v1.0" # ############################################################# # We use these fine modules... use strict; use warnings;

# an example of tab seperated values that we can export from a Garmin GPS # the values are: lat long elevation timestamp # we add each line of the data to an array of data

# the number of lines of data in our data file my $number_of_lines = @input;

# we subtract by one so we can sync this number up with array order (it's a perl thing) $number_of_lines = ($number_of_lines - 1);

#set our total up and down values to zero my $totalUp = 0; my $totalDown = 0;

#create a line counter so we know when to exit the while loop. my $line_counter=0;

# now we start going over the data # on the first pass we grab the first and next lines # we increment the line number we start with on each pass while ($line_counter < $number_of_lines) {

my ($latA, $lonA, $eleA, $timeA) = split(/\t/, $input[$line_counter]);

$line_counter++;

my ($latB, $lonB, $eleB, $timeB) = split(/\t/, $input[$line_counter]);

# now we have our data. here's the routine to count the total feet down we climbed

if ($eleB < $eleA) {

my $difference = ($eleA - $eleB);

$totalDown = ($totalDown - $difference);

}

# here's the routine to count the total feet up we climbed if ($eleB > $eleA) {

my $difference = ($eleB - $eleA);

$totalUp = ($totalUp + $difference);

}

# here's where we need the math to figure total miles actually hiked.

Unfortunately, path length cannot be calculated directly from total horizontal and total vertical distance (unless you're moving on a perfectly straight line), so you'd have to calculate the increment gained each time the GPS collects data (say, every 30 seconds, or so?), and add up the result:

That's what we're doing with this script. In the first instance of the "while" loop we get the difference from the values in lines 1 and 2. In the next instance we use lines 2 and 3, and so on until we've processed all the lines in the data record.

Okay, I already have the value for delta_z in the $difference variable .

I can get the value for delta_x easy enough, but I've going to need some help with the pathlength math. That's all a foreign language to me. After I get the delta_x value if you all can help me break it down so I can convert it to perl code we'll have the results we're looking for.

After that I can convert this code into a "Web App" that you can upload your track file to and get the results.

Total Distance : 60.7402091398617 || Elevation Change : 22.0800525269999 [/quote]

That should give you the numbers you need to run your math and compare to the total distance shown. You should probably double check my numbers, but you only need to check two legs of data to confirm if they are good or not, and I'll fix them if they are bad.

I would run that last bit of math myself, but you'll have to explain what "delta_x^2" means. Is there a way to write that in longhand math that I can better understand?

Hopefully you'll forgive me for not being able to decipher the formula you've offered. I never had an opportunity to take any math classes past the eighth grade, schools in LA were pretty overcrowded in the `70s...

Edited by billstephenson () Edit Reason: clarification

I'm not too familiar with perl, but it seems like it should be able to handle these operations. A quick search shows me that exponents (that I write with a caret) use double asterisks **, so the length of leg 1 would be

or in numbers ( 10.3625268966932**2 + 3.14960630400012**2 )**(1/2) = 10.8306

and then add all the lengths together to get

10.8306 + 29.8016 + 19.5599 + 4.67766 = 64.8697

Sorry if my abbreviations for square and square-root aren't familiar; I spend my days staring at equations and tend to forget that most people don't. Let me know if that doesn't help any!

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

[quote=squark]and then add all the lengths together to get

10.8306 + 29.8016 + 19.5599 + 4.67766 = 64.8697

[/quote]

That worked!

Here's what I got:

Flat Distance : 60.7402091398617 Adjusted for Terrain Distance : 64.8697213477516

That's a big difference for just 60 ft of travel, and that sample was taken from my GPS track of a hike in the hollow below my house. I did grab that small piece because it had a notable variation in elevation, so it's not an average sample, but what it shows is significant.

If anyone has a track they'd like to run through the code I'd be glad to post the results. For that matter, if anyone wants the code, I'd be glad to send it to you.

Ummm - clearly the unit of measure used will determine the actual distance traveled. This is where CHAOS enters into the equation. Its like how many miles long is the west British coast? Now using a mm long measuring device and going around every rock and nuance, how long is it? The answer approaches infinity as the unit of measure shrinks.

A gps adds the horizontal distance between the points where it takes a data sample. If it is set to sample every minute and you meander, the distance covered will be less than if it samples every half minute, etc.

Of course the GPS will say the two waypoints are .87 miles apart. If you really did travel in a straight line up hill at 30 degrees, it would say .87 miles on its odometer - the sum of the horizontal distances between the data points. Jim

_________________________
These are my own opinions based on wisdom earned through many wrong decisions. Your mileage may vary.

_________________________
"Stand in the ways and see, and ask for the old paths, where the good way is, and walk in it; then you will find rest for your souls."

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

[quote]Ummm - clearly the unit of measure used will determine the actual distance traveled.[/quote]

Yep, a GPS set on it's finest grain of data collection points does not provide a very high resolution picture of what you actually hiked, and the way your milage is calculated by a GPS ignores terrain all together.

There is solid logic behind that approach and your "This is where CHAOS enters into the equation" observation is the root of it.

That logic applies best to things like maps and boats and airplanes, and works just fine for cars on roads, but it's not so good for hikers that want to know how far they actually hiked. So the little app we are working on goes as far as possible with the data available from a GPS to give a better estimate of actual boots on the ground miles.

Still, compared to the most accurate piece of technology we currently have for measuring that, the best GPS still sucks.

Registered:
Posts: 3743
Loc: Ozark Mountains in SW Missouri

[quote=wandering_daisy]There may be some GPS units that have a chip inside that converts, thus allowing you to choose how you want distance presented. I suspect most do not simply because there appear to be many different ways to calculation depending what you want to measure. Anyway Gershon needs to look in his manual and see if there is a setting that allows one or the other. [/quote]

I'm not aware of one that does that, but companies like Garmin are pretty responsive to users, and if one requested a "Miles Hiked" feature that accounted for elevation I'm pretty sure they'd add it. If they added it to their "BaseCamp" software it'd be free and backwards compatible with their hardware, and it'd be a feature that'd hit their target market for that product.

On their hardware, they could add it with a software update, and if they kept only a running total they could obtain a much finer degree of accuracy while using little processing power or storage space.