{"id":2571,"date":"2015-05-15T14:03:56","date_gmt":"2015-05-15T05:03:56","guid":{"rendered":"https:\/\/regex.info\/blog\/2015-05-15\/2571"},"modified":"2016-06-05T01:07:03","modified_gmt":"2016-06-04T16:07:03","slug":"more-gps-cycling-tests-things-are-pretty-bad-and-theres-little-hope","status":"publish","type":"post","link":"https:\/\/regex.info\/blog\/2015-05-15\/2571","title":{"rendered":"More GPS Cycling Tests: Things are Pretty Bad and There&#8217;s Little Hope"},"content":{"rendered":"\n\n<div class='ic' itemscope itemtype='http:\/\/schema.org\/Photograph'><a name=\"i141839\" href='\/i\/JF7_141839.jpg' itemprop='image'\n><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/JF7_141839_sm.jpg\" width=\"690\" height=\"459\"\nalt=\"Top of Mt. Otowa (\u97f3\u7fbd\u5c71) Kyoto, Japan -- Otowyama (\u97f3\u7fbd\u5c71) -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\nid=\"i141839\"\ntitle=\"Top of Mt. Otowa (\u97f3\u7fbd\u5c71) Kyoto, Japan -- Otowyama (\u97f3\u7fbd\u5c71) -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\/><\/a>\n<br\/><span class=\"camera-info robots-nocontent\">Nikon D700 + Sigma &#8220;Bigma&#8221; 50-500mm OS @ 50mm &mdash; <sup>1<\/sup><big>\/<\/big>1250 sec, <span class='f'>f<\/span>\/8, ISO 560 &mdash;\n<a href='\/imageinfo.cgi?url=http%3A%2F%2Fregex.info%2Fi%2FJF7_141839.jpg'>map &amp; image data<\/a> &mdash; <a href='\/blog\/proximity\/i\/JF7_141839.jpg'>nearby photos<\/a><\/span>\n<br\/><span class='caption'>Top of Mt. Otowa <span class='nobr'>(\u97f3\u7fbd\u5c71)<\/span><\/span>\n<br\/>Kyoto, Japan\n<meta itemprop='url' content='http:\/\/regex.info\/i\/JF7_141839.jpg'\/>\n<meta itemprop='creator' content='Jeffrey Friedl'\/>\n<meta itemprop='copyrightHolder' content='Jeffrey Friedl'\/>\n<meta itemprop='dateCreated' content='2015-05-13'\/>\n<meta itemprop='about' content=\"Top of Mt. Otowa (\u97f3\u7fbd\u5c71) Kyoto, Japan -- Otowyama (\u97f3\u7fbd\u5c71) -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\/><\/div>\n\n<p>I made my second cycling run up Mt. Otowa <span class='nobr'>(\u97f3\u7fbd\u5c71)<\/span> on Wednesday, <a\nhref='\/blog\/2015-05-12\/2569'>the first<\/a> having been two\ndays prior in the gloomy late afternoon just before <span class='nobr'>a typhoon<\/span> came through.\nWednesday's was the first afternoon after the mild typhoon passed, so <span class='nobr'>I\nexpected<\/span> the air to be really clear (<a\nhref='\/blog\/2007-07-16\/522'>like this<\/a> and <a\nhref='\/blog\/2012-06-21\/2029'>this<\/a>), so <span class='nobr'>I lugged<\/span> <a\nhref='\/blog\/2010-04-14\/1492'>my Sigma <span class='QO'>&#8220;<\/span>Bigma<span class='QC'>&#8221;<\/span> 50mm~500mm\nzoom<\/a> all the way up there, along with the 2&times;TC to give me <a\nhref='\/blog\/2010-04-21\/1498'>a 1,000mm lens<\/a>.<\/p>\n\n<p>It was <i>so<\/i> not worth it... it was the most hazy I'd seen it in ages.<\/p>\n\n<div class='ic' itemscope itemtype='http:\/\/schema.org\/Photograph'><a name=\"i141829\" href='\/i\/JF7_141829.jpg' itemprop='image'\n><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/JF7_141829_sm.jpg\" width=\"690\" height=\"459\"\nalt=\"Super Super Hazy I was there for an hour, and could never even find Kyoto Tower -- Otowyama (\u97f3\u7fbd\u5c71) -- Kyoto, Japan -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\nid=\"i141829\"\ntitle=\"Super Super Hazy I was there for an hour, and could never even find Kyoto Tower -- Otowyama (\u97f3\u7fbd\u5c71) -- Kyoto, Japan -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\/><\/a>\n<br\/><span class=\"camera-info robots-nocontent\">Nikon D700 + Sigma &#8220;Bigma&#8221; 50-500mm OS @ 100mm &mdash; <sup>1<\/sup><big>\/<\/big>1250 sec, <span class='f'>f<\/span>\/13, ISO 800 &mdash;\n<a href='\/imageinfo.cgi?url=http%3A%2F%2Fregex.info%2Fi%2FJF7_141829.jpg'>map &amp; image data<\/a> &mdash; <a href='\/blog\/proximity\/i\/JF7_141829.jpg'>nearby photos<\/a><\/span>\n<br\/><span class='caption'>Super Super Hazy<\/span>\n<br\/>I was there for an hour, and could never even find Kyoto Tower\n<meta itemprop='url' content='http:\/\/regex.info\/i\/JF7_141829.jpg'\/>\n<meta itemprop='creator' content='Jeffrey Friedl'\/>\n<meta itemprop='copyrightHolder' content='Jeffrey Friedl'\/>\n<meta itemprop='dateCreated' content='2015-05-13'\/>\n<meta itemprop='about' content=\"Super Super Hazy I was there for an hour, and could never even find Kyoto Tower -- Otowyama (\u97f3\u7fbd\u5c71) -- Kyoto, Japan -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\/><\/div>\n\n<p>The only things that were sort of clearly visible were close, just near the foot of the mountain.\nThis is <span class='nobr'>a gas<\/span> station that <span class='nobr'>I pass<\/span> by along the way that marks an increase in the steepness of the route...<\/p>\n\n<div class='ic tight' itemscope itemtype='http:\/\/schema.org\/Photograph'><a name=\"i141827\" href='\/i\/JF7_141827.jpg' itemprop='image'\n><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/JF7_141827_sm.jpg\" width=\"690\" height=\"459\"\nalt=\"Starts to Get Steeper Soon -- Otowyama (\u97f3\u7fbd\u5c71) -- Kyoto, Japan -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\nid=\"i141827\"\ntitle=\"Starts to Get Steeper Soon -- Otowyama (\u97f3\u7fbd\u5c71) -- Kyoto, Japan -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\/><\/a>\n<br\/><span class=\"camera-info robots-nocontent\">Nikon D700 + Sigma &#8220;Bigma&#8221; 50-500mm OS @ 1000mm &mdash; <sup>1<\/sup><big>\/<\/big>1250 sec, <span class='f'>f<\/span>\/13, ISO 1800 &mdash;\n<a href='\/imageinfo.cgi?url=http%3A%2F%2Fregex.info%2Fi%2FJF7_141827.jpg'>map &amp; image data<\/a> &mdash; <a href='\/blog\/proximity\/i\/JF7_141827.jpg'>nearby photos<\/a><\/span>\n<br\/><span class='caption'>Starts to Get Steeper Soon<\/span>\n<meta itemprop='url' content='http:\/\/regex.info\/i\/JF7_141827.jpg'\/>\n<meta itemprop='creator' content='Jeffrey Friedl'\/>\n<meta itemprop='copyrightHolder' content='Jeffrey Friedl'\/>\n<meta itemprop='dateCreated' content='2015-05-13'\/>\n<meta itemprop='about' content=\"Starts to Get Steeper Soon -- Otowyama (\u97f3\u7fbd\u5c71) -- Kyoto, Japan -- Copyright 2015 Jeffrey Friedl, https:\/\/regex.info\/blog\/\"\/><\/div>\n\n<p>As the crow flies it's about 2,580m (1.6mi) away, but due to how the road winds up the mountain,\nthe covered distance is about three times that. <span class='nobr'>It took me<\/span> about 49 minutes to make it from there,\nand about 23 minutes to make it back down.<\/p>\n\n<p>(If find it shocking that the return trip takes only half the time; it feels like it takes about 1\/10th the time.)<\/p>\n\n<p>In the spirit of <span class='QO'>&#8220;<\/span><a class='pt'\nhref='\/blog\/2015-05-09\/2568'>The Voodoo of Elevation Gain\nand Strava (and How <span class='nobr'>I Get<\/span> Around It)<\/a><span class='QC'>&#8221;<\/span>, <span class='nobr'>I brought<\/span> three GPS\/GLONASS\nunits with me, using various ways to extract nine different tracklogs...<\/p>\n\n<table style='margin-left:4em' border='1' cellpadding='5' cellspacing='0'><tr><th>Device<\/th><th>Tracklogs<\/th><\/tr>\n<tr valign='baseline'><td>Apple iPhone 6+<\/td><td>\nVia the <a href='http:\/\/strava.com\/'>Strava<\/a> app.\n<br\/>\nVia <a href='http:\/\/runmeter.com\/'>Abvio's Runmeter<\/a> app.\n<br\/>\nVia the <a href='http:\/\/runtastic.com\/'>Runtastic<\/a> app.\n<br\/>\nVia the\n<strike>Galileo Offline Maps<\/strike> (Name changed Feb 2019 to <a href='https:\/\/gurumaps.app\/'>Guru Maps<\/a>) app.\n<\/td><\/tr>\n\n<tr valign='baseline'><td>Garmin eTrex 20<\/td><td>downloaded from the device<\/td><\/tr>\n\n<tr valign='baseline'><td>Bad Elf GPS Pro +<\/td><td>\nDownloaded via their app, with GPS elevation.\n<br\/>\nDownloaded via USB, with GPS elevation.\n<br\/>\nDownloaded via their app, with barometric elevation.\n<br\/>\nDownloaded via USB, with barometric elevation.\n<\/td><\/tr>\n<\/table>\n\n<p>Now in theory, all four iPhone apps should produce the same tracklog because they all share the same\niOS Location Services data, but they're all quite different. <i>Runmeter<\/i> (which is identical to their\n<i>Cyclemeter<\/i> and <i>Walkmeter<\/i> apps except for the name and icon) has an option to use the iPhone's\nbarometric altimeter, and as the <i>Voodoo<\/i> post explains, the Strava app ignores both iPhone altimeters,\nbut elevation aside, the latitude\/longitude tracks among the four should be identical, but they're far from it:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-four-tracks.jpg\" width=\"690\" height=\"362\"\nid=\"i2015_05_13_four_tracks\"\/>\n<br\/>The Four <span class='QO'>&#8220;<\/span>Identical<span class='QC'>&#8221;<\/span> iPhone-app Tracks\n<meta itemprop='about' content=\"The Four &amp;#8220; Identical &amp;#8221; iPhone-app Tracks\"\/><\/div>\n\n<p>Part (all?) of the problem is the sampling frequency. <span\nclass='nobr'>Of the four<\/span> iPhone apps, the most frequent logger is\n<i>Guru Maps<\/i>, which creates <span class='nobr'>a\ndatapoint<\/span> every second when there's obvious movement. <span\nclass='nobr'>The other<\/span> three apps sample the location <span\nclass='QO'>&#8220;<\/span>every so often<span class='QC'>&#8221;<\/span> in\nways that can lead to some big errors. For example, Runmeter's didn't put <span class='nobr'>a\ndatapoint<\/span> for where <span class='nobr'>I stopped<\/span> my ride until <i>more than 30 seconds after <span class='nobr'>I\nhad<\/span> stopped<\/i>, making it look as if <span class='nobr'>I was<\/span> 30+ seconds slower than <span class='nobr'>I\nactually<\/span> was. <span class='nobr'>Adding 30<\/span>+ seconds to <span class='nobr'>a segment<\/span> can destroy the effort (e.g.\n<span class='nobr'>a hill<\/span>-sprint that takes <span class='nobr'>a respectable<\/span> 90 seconds gets recorded as <span class='nobr'>a pathetic<\/span> two minutes.)<\/p>\n\n<p>Even more odd are the four tracklogs from the <a\nhref='http:\/\/bad-elf.com\/products\/be-gps-2300'>Bad Elf GPS Pro+<\/a>. <span\nclass='nobr'>On the plus<\/span> side, it records <span class='nobr'>a\ndata<\/span> point once every second (and can be configured to record 10 per\nsecond!), and also, it records altitude two ways (satellite and\nbarometric). Because of that last feature, in extracting its data, I'd expect\n<i>one<\/i> track with <i>two<\/i> elevation profiles, but as odd as it\nseems, one can actually derive <i>two<\/i> different tracks with <i>four<\/i>\nelevation profiles. You see, tracklogs can be pulled from the device via\ndirect USB connection, or via its iOS app. <span class='nobr'>One\nwould<\/span> think that either method is just transporting the same data,\nbut they inexplicably give different data. <span class='nobr'>I then\nsplit<\/span> each into two tracklogs, one with the satellite altitude, and\none with the barometric altitude. <span class='nobr'>So we end<\/span> up\nwith two tracks with four different elevation profiles. Bizarre.<\/p>\n\n<p>(I <i>so<\/i> wanted to like this unit, mostly because the company seemed to have <span class='nobr'>a clue<\/span> and\nwasn't Garmin, but with so many little problems like this cropping up, <span class='nobr'>I have to<\/span> finally admit\nthat <span class='nobr'>I can't<\/span> recommend the unit.<span>\ud83d\ude41<\/span>)<\/p>\n\n<hr align='left' width='20%'\/>\n\n<p>Anyway, I have nine tracklogs, and of course none of them agree on the\namount of vertical gain. This problem likely stems from the aforementioned\nsampling frequency, and also the data source (barometric or satellite\naltimeter) and post processing. Here's <span class='nobr'>a look<\/span> at the tracklogs, their\nresulting plot in Google Earth, and various claims about the vertical\nclimb: what the app itself claimed, what my software calculates, and what\nGoogle Earth calculates...<\/p>\n\n<div style='margin:auto; width:710px; border: solid 1px #333'>\n<div style='margin-left:5px; height:282px; width:690px; position: relative; z-index: 1; padding-bottom: 10px'>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-BadElfApp.png\" width=\"690\" height=\"282\"\nid=\"img_185_1\"\nstyle=\"position:absolute; left:0; top:0; display:display\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-BadElfAppBaro.png\" width=\"690\" height=\"282\"\nid=\"img_185_2\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-BadElfUSB.png\" width=\"690\" height=\"282\"\nid=\"img_185_3\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-BadElfUSBBaro.png\" width=\"690\" height=\"282\"\nid=\"img_185_4\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-Galileo.png\" width=\"690\" height=\"282\"\nid=\"img_185_5\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-Gamin-eTrex20.png\" width=\"690\" height=\"282\"\nid=\"img_185_6\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-Runmeter.png\" width=\"690\" height=\"282\"\nid=\"img_185_7\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-Runtastic.png\" width=\"690\" height=\"282\"\nid=\"img_185_8\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n<img loading=\"lazy\" decoding=\"async\" src=\"\/i\/c\/2015-05-13-ELE-Strava.png\" width=\"690\" height=\"282\"\nid=\"img_185_9\"\nstyle=\"position:absolute; left:0; top:0; display:none\"\/>\n\n<\/div>\n\n<style type=\"text\/css\">\ntable#t185 td { border-bottom: solid 1px #888; padding: 2px 1em 2px 1em }\ntable#t185 td:nth-child(2) { text-align: right }\ntable#t185 td:nth-child(3) { text-align: right }\ntable#t185 td:nth-child(4) { text-align: right }\ntable#t185 td:nth-child(5) { text-align: right }\n<\/style>\n\n<table id='t185' cellpadding='0' cellspacing='0' align='center'>\n<tr>\n <!--name-->            <th><\/th>\n <!--datapoints-->      <th><\/th>\n <!--disp -->   <th colspan='3' style='text-align:center;border-bottom:1px solid #555'>Vertical Gain <small>(meters)<\/small><\/th>\n<\/tr>\n\n\n<tr>\n <!--name-->            <th>Tracklog<\/th>\n <!--datapoints-->      <th>Points<\/th>\n <!--disp vert gain-->  <th >App<\/th>\n <!--smoothed vgain-->  <th >Jeff<\/th>\n <!--elevation gain-->  <th >Earth<\/th>\n<\/tr>\n\n<tr id='butt_185_5' onmouseover='OnMouse_185_5()'>\n <!--name-->            <td>iPhone \/ Guru<\/td>\n <!--datapoints-->      <td>5,243<\/td>\n <!--disp vert gain-->  <td><\/td>\n <!--smoothed vgain-->  <td>738<\/td>\n <!--elevation gain-->  <td>814<\/td>\n <!--elevation range _td>40m ~ 597<\/td>-->\n <!--distance        <td>26.3k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_9' onmouseover='OnMouse_185_9()'>\n <!--name-->            <td> iPhone \/ Strava<\/td>\n <!--datapoints-->      <td> 3,979<\/td>\n <!--disp vert gain-->  <td>984<\/td>\n <!--smoothed vgain-->  <td>1087<\/td>\n <!--elevation gain-->  <td>1194<\/td>\n <!--elevation range <td>47m ~ 577<\/td>-->\n <!--distance        <td>26.2k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_7' onmouseover='OnMouse_185_7()'>\n <!--name-->            <td>iPhone \/ Runmeter<\/td>\n <!--datapoints-->      <td> 658<\/td>\n <!--disp vert gain-->  <td>607<\/td>\n <!--smoothed vgain-->  <td>582<\/td>\n <!--elevation gain-->  <td>635<\/td>\n <!--elevation range <td>33m ~ 572<\/td>-->\n <!--distance        <td>26.0k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_8' onmouseover='OnMouse_185_8()'>\n <!--name-->            <td> iPhone \/ Runtastic<\/td>\n <!--datapoints-->      <td> 2,242<\/td>\n <!--disp vert gain-->  <td>879<\/td>\n <!--smoothed vgain-->  <td>863<\/td>\n <!--elevation gain-->  <td>932<\/td>\n <!--elevation range <td>47m ~ 573<\/td>-->\n <!--distance>        <td>26.1k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_1' onmouseover='OnMouse_185_1()'>\n <!--name-->            <td>Bad Elf (app\/GPS)<\/td>\n <!--datapoints-->      <td>9,641<\/td>\n <!--disp vert gain-->  <td><\/td>\n <!--smoothed vgain-->  <td>782<\/td>\n <!--elevation gain-->  <td>855<\/td>\n <!--elevation range <td>21m ~ 581<\/td>-->\n <!--distance        <td>25.4k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_2' onmouseover='OnMouse_185_2()'>\n <!--name-->            <td>Bad Elf (app\/baro)<\/td>\n <!--datapoints-->      <td>9,641<\/td>\n <!--disp vert gain-->  <td><\/td>\n <!--smoothed vgain-->  <td>620<\/td>\n <!--elevation gain-->  <td>752<\/td>\n <!--elevation range <td>60m ~ 623<\/td>-->\n <!--distance        <td>25.4k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_3' onmouseover='OnMouse_185_3()'>\n <!--name-->            <td>Bad Elf (USB\/GPS)<\/td>\n <!--datapoints-->      <td>9,641<\/td>\n <!--disp vert gain-->  <td><\/td>\n <!--smoothed vgain-->  <td>782<\/td>\n <!--elevation gain-->  <td>823<\/td>\n <!--elevation range <td>21m ~ 581<\/td>-->\n <!--distance        <td>25.4k<\/td>-->\n<\/tr>\n\n<tr id='butt_185_4' onmouseover='OnMouse_185_4()'>\n <!--name-->            <td>Bad Elf (USB\/baro)<\/td>\n <!--datapoints-->      <td>9,641<\/td>\n <!--disp vert gain-->  <td><\/td>\n <!--smoothed vgain-->  <td>623<\/td>\n <!--elevation gain-->  <td>760<\/td>\n <!--elevation range <td>60m ~ 631<\/td>-->\n <!--distance        <td>25.4k<\/td>-->\n<\/tr>\n\n\n<tr id='butt_185_6' onmouseover='OnMouse_185_6()'>\n <!--name-->            <td>Garmin eTrex 20<\/td>\n <!--datapoints-->      <td>9635<\/td>\n <!--disp vert gain-->  <td><\/td>\n <!--smoothed vgain-->  <td>931<\/td>\n <!--elevation gain-->  <td>1001<\/td>\n <!--elevation range <td>47m ~ 607<\/td>-->\n <!--distance        <td>25.8k<\/td>-->\n<\/tr>\n<\/table>\n<\/div>\n\n<script type=\"text\/javascript\">\n var img_185_1  = document.getElementById('img_185_1');\nvar butt_185_1 = document.getElementById('butt_185_1');\nvar img_185_2  = document.getElementById('img_185_2');\nvar butt_185_2 = document.getElementById('butt_185_2');\nvar img_185_3  = document.getElementById('img_185_3');\nvar butt_185_3 = document.getElementById('butt_185_3');\nvar img_185_4  = document.getElementById('img_185_4');\nvar butt_185_4 = document.getElementById('butt_185_4');\nvar img_185_5  = document.getElementById('img_185_5');\nvar butt_185_5 = document.getElementById('butt_185_5');\nvar img_185_6  = document.getElementById('img_185_6');\nvar butt_185_6 = document.getElementById('butt_185_6');\nvar img_185_7  = document.getElementById('img_185_7');\nvar butt_185_7 = document.getElementById('butt_185_7');\nvar img_185_8  = document.getElementById('img_185_8');\nvar butt_185_8 = document.getElementById('butt_185_8');\nvar img_185_9  = document.getElementById('img_185_9');\nvar butt_185_9 = document.getElementById('butt_185_9');\n\nvar bg1 = '#884444';\nvar bg2 = '#181818';\n\n function OnMouse_185_1() {\n  img_185_1.style.display = 'block';  butt_185_1.style.backgroundColor = bg1;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_2() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'block';  butt_185_2.style.backgroundColor = bg1;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_3() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'block';  butt_185_3.style.backgroundColor = bg1;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_4() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'block';  butt_185_4.style.backgroundColor = bg1;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_5() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'block';  butt_185_5.style.backgroundColor = bg1;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_6() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'block';  butt_185_6.style.backgroundColor = bg1;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_7() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'block';  butt_185_7.style.backgroundColor = bg1;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_8() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'block';  butt_185_8.style.backgroundColor = bg1;\n  img_185_9.style.display = 'none' ;  butt_185_9.style.backgroundColor = bg2;\n}\n\nfunction OnMouse_185_9() {\n  img_185_1.style.display = 'none' ;  butt_185_1.style.backgroundColor = bg2;\n  img_185_2.style.display = 'none' ;  butt_185_2.style.backgroundColor = bg2;\n  img_185_3.style.display = 'none' ;  butt_185_3.style.backgroundColor = bg2;\n  img_185_4.style.display = 'none' ;  butt_185_4.style.backgroundColor = bg2;\n  img_185_5.style.display = 'none' ;  butt_185_5.style.backgroundColor = bg2;\n  img_185_6.style.display = 'none' ;  butt_185_6.style.backgroundColor = bg2;\n  img_185_7.style.display = 'none' ;  butt_185_7.style.backgroundColor = bg2;\n  img_185_8.style.display = 'none' ;  butt_185_8.style.backgroundColor = bg2;\n  img_185_9.style.display = 'block';  butt_185_9.style.backgroundColor = bg1;\n}\nOnMouse_185_5();\n\n<\/script>\n\n\n<p style='margin-top:60px'>\nThe wide variation among results is pretty ridiculous, which is probably an\naccurate reflection on the state of consumer GPS, and perhaps why Strava\nthrows away your elevation data in preference for its data. Sure, Strava's data may\nbe wildly incorrect, but at least it's <i>consistently<\/i> incorrect (well,\nit has consistency to the extent that <span class='nobr'>a user's<\/span> two-dimensional location data\n&mdash; latitude and longitude of each point along the route &mdash; is\ncorrect, which is to say that it's not really consistent at all. <span>\ud83d\ude41<\/span>)<\/p>\n\n<p>For what it's worth, the shape of the <span class='QO'>&#8220;<\/span>iPhone \/ Guru<span class='QC'>&#8221;<\/span> elevation\nprofile looks the most realistic, followed closely by Runmeter and the Bad\nElf barometric. <span class='nobr'>The Runtastic<\/span> and Strava results are just ridiculous, and\nthe GPS tracks from the Bad Elf and Garmin units are clearly broken.<\/p>\n\n<p>It's a sad state of affairs. I'd love to try the test with one of those\n$10,000 commercial\/professional unit.<\/p>\n\n<p><b>So what's the <i>actual<\/i> vertical climb for this route?<\/b><\/p>\n\n<p>I'm going to say it's 700m (2,300').<\/p>\n\n<p>The government of Japan makes very accurate laser-derived elevation data\navailable on <a href='http:\/\/maps.gsi.go.jp'>this web site<\/a>. <span class='nobr'>The route<\/span> from my house up to the top of the mountain can be broken into just <span class='nobr'>a few<\/span>\nup\/down segments, whose vertical climb can be easily derived by comparing\nthe elevation at the start and end:<\/p>\n\n<style type=\"text\/css\">\nli.ed { color: #8D8 }\nli.eu { color: #D88 }\n<\/style>\n<ol><li class='ed'>Front door to Sanjo St: down 2m<\/li>\n    <li class='eu'>To top of Keage hill: up 51.8m<\/li>\n    <li class='ed'>To low spot just before turnoff to old Sanjo: down 46.5m<\/li>\n    <li class='eu'>To the gas station seen above: up 35.9m<\/li>\n    <li class='ed'>Underpass below Rt 1: down 4.8m<\/li>\n    <li class='eu'>To high point at trail entrance at end of road:  up 423m<\/li>\n    <li class='ed'>Tiny\/steep downslope near start of trail: down 7m<\/li>\n    <li class='eu'>To top of mountain: up 110.5<\/li>\n<\/ol>\n\n<p>The <span class='QO'>&#8220;<\/span>ups<span class='QC'>&#8221;<\/span> are the vertical climb on the way there, and the <span class='QO'>&#8220;<\/span>downs<span class='QC'>&#8221;<\/span>\nbecome climbs on the way back, so just adding them all together gives the\ntotal: 681.5m<\/p>\n\n<p>This is an absolute lower bound... the vertical climb will be more if there were\nrising slopes that <span class='nobr'>I forgot<\/span> about.<\/p>\n\n<p>I do know that there were a few spots on the steep road up the mountain\nwhere it leveled off for <span class='nobr'>a while,<\/span> and even went\nslightly downhill for some time (short reprieves certainly appreciated).\n<span class='nobr'>I couldn't<\/span> measure these well on the web site\nbecause <span class='nobr'>I didn't<\/span> remember their exact locations,\nbut let's say there were four of them and the elevation loss was just 2m\neach, then that adds 8m (4&times;2m) that we have to re-climb on the way\nup, and the same for the way down, so that leaves us with <span\nclass='nobr'>a calculated<\/span> 697.5m. <span class='nobr'>It's\nprobably<\/span> <span class='nobr'>a bit<\/span> more than that due to\nfluctuations on what seem flat sections, so let's round it up to 700m and\ncall it <span class='nobr'>a day.<\/span><\/p>\n\n<p>In the end, I uploaded a smoothed version of the Guru track to Strava,\nwhere it appears as\n<span class='QO'>&#8220;<\/span><a href='https:\/\/www.strava.com\/activities\/304789217\/overview'>Otowayama #2 <span class='nobr'>(\u97f3\u7fbd\u5c71<\/span>\u305d\u306e\u4e8c)<\/a><span class='QC'>&#8221;<\/span>\nwith <span class='nobr'>a vertical<\/span> climb pulled out of thin air as 771m.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>I made my second cycling run up Mt. Otowa (\u97f3\u7fbd\u5c71) on Wednesday, the first having been two days prior in the gloomy late afternoon just before a typhoon came through. Wednesday's was the first afternoon after the mild typhoon passed, so I expected the air to be really clear (like this and this), so I lugged my Sigma \"Bigma\" 50mm~500mm zoom all the way up there, along with the 2&times;TC to give me a 1,000mm lens.<\/p> <p>It was so not worth it... it was the most hazy I'd seen it in ages.<\/p> <p>The only things that were sort of clearly [...]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,1,2,31,4],"tags":[],"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/2571"}],"collection":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/comments?post=2571"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/2571\/revisions"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=2571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/categories?post=2571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/tags?post=2571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}