{"id":1922,"date":"2012-01-15T00:43:25","date_gmt":"2012-01-14T15:43:25","guid":{"rendered":"https:\/\/regex.info\/blog\/2012-01-15\/1922"},"modified":"2012-01-15T00:43:25","modified_gmt":"2012-01-14T15:43:25","slug":"informal-gps-logger-test-iphone-4s-gps-is-shockingly-good","status":"publish","type":"post","link":"https:\/\/regex.info\/blog\/2012-01-15\/1922","title":{"rendered":"Informal GPS Logger Test: iPhone 4s GPS is Shockingly Good"},"content":{"rendered":"\n\n\n<div class='resize_warning' id='arw1922'>\n<b>NOTE<\/b>: Images with an <img class='raw' width='19' height='18' src='\/i\/s\/red_zoomup.gif'\/> icon next to them have been artificially shrunk to better fit your screen; click the icon to restore them, in place, to their regular size.\n<\/div>\n\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view00.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view00\"\/>\n<br\/>\n<span class='caption'>Tale of Three Tracklogs<\/span>\n<br\/>on a three-hour stroll in Kyoto, Japan\n<\/div>\n\n<p>In the comments of <a href='\/blog\/2012-01-08\/1917'><span class='nobr'>a\nrecent<\/span> post about GPS receivers<\/a>, it was suggested that the GPS receiver\nin the iPhone was useful for keeping tracklogs. <span class='nobr'>I had bad<\/span> experiences with\niPhone location services when <span class='nobr'>I tested<\/span> in 2009, but perhaps my test wasn't\ngood, or perhaps the old iPhone 3 wasn't good, so <span class='nobr'>I thought<\/span> I'd give it\nanother try.<\/p>\n\n<p>So, the other day I took three GPS receivers with me while <span class='nobr'>I did<\/span> some\nerrands. As <a href='\/blog\/2011-11-09\/1882'>I'm apt to do\nlately<\/a>, <span class='nobr'>I walked.<\/span><\/p>\n\n<p>This post is a comparison of the resulting tracklogs.<\/p>\n\n<style type=\"text\/css\">\n  div.s1922 { position: absolute; top:0; left:0; visibility:hidden }\n  #c1922 div { width:100px; display:inline }\n  span.c1922 { font-size: 120% }\n  .g20 { color:#c07824 }\n  .hcx { color:#4f87b6 }\n  #post1922 div.ic { line-height:150% }\n<\/style>\n\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view02.png\" width=\"753\" height=\"511\"\nid=\"itrack_20110112_view02\"\/>\n<div style='line-height:200%'>\n<span class='caption'>Coming and Going<\/span>\n<br\/><b style='color:#4f87b6'>Garmin eTrex Legend HCx<\/b>\n&nbsp;&middot;&nbsp;\n<b style='color:#c07824'>Garmin eTrex 20<\/b>\n&nbsp;&middot;&nbsp;\nblack is iPhone 4s\n<\/div>\n<\/div>\n\n<p>The three devices I took along on my unscientific test:<\/p>\n\n<ol>\n  <li><p><b class='hcx'>Garmin eTrex Legend HCx<\/b> <a href='\/blog\/2007-08-09\/539'>that <span class='nobr'>I bought<\/span><\/a> in 2007.\n     It supports <a href='http:\/\/en.wikipedia.org\/wiki\/Global_Positioning_System'>GPS<\/a> with <a href='http:\/\/en.wikipedia.org\/wiki\/WAAS'>WAAS<\/a> for increased accuracy. <span class='nobr'>It has a<\/span> slate-blue outer shell, so its tracklog gets <span class='nobr'>a blue<\/span> line on the plot.\n<\/p><\/li>\n\n<li><p><b class='g20'>Garmin eTrex 20<\/b> that <span class='nobr'>I bought<\/span> in Fall\n2011 (<a\nhref='https:\/\/buy.garmin.com\/shop\/shop.do?cID=145&amp;pID=87771&amp;ra=true'>product\npage at Garmin<\/a>). Garmin has adjusted the hardware\/software to make it\neven more troublesome to use than its predecessor, which is quite <span class='nobr'>a feat,<\/span>\nbut on the plus side it not only contains <span class='nobr'>a GPS<\/span>\/WAAS receiver, but also a <a\nhref='http:\/\/en.wikipedia.org\/wiki\/GLONASS'>GLONASS<\/a> receiver, to tap in\nto Russia's own independent version of America's GPS. <span class='nobr'>The theory<\/span> is that\nmore satellites in the sky means more satellites likely visible to the unit in any\nsituation, and so better accuracy. <span class='nobr'>I got the<\/span> orange one, so its tracklog's plot is orange.\n\n<\/p><\/li>\n\n<li><p><b>iPhone 4s<\/b> with the <a href='http:\/\/news.motionx.com\/category\/motionx-gps\/'>MotionX GPS app<\/a>. This is <span class='nobr'>a GPS<\/span> (<b>update<\/b>: and GLONASS!) receiver, likely(?) without WAAS. <span class='nobr'>My iPhone<\/span> is black, so its tracklog gets <span class='nobr'>a black<\/span> line.\n\n     <\/p><\/li>\n<\/ol>\n\n<p>The results from the iPhone was much better than <span class='nobr'>I expected,<\/span> and the\nothers were worse than <span class='nobr'>I expected.<\/span> <span class='nobr'>In the short<\/span> plot segment above, which\nshows both the start and end of my walk, the iPhone is the closest to where\n<span class='nobr'>I actually<\/span> walked, including crossing the street toward the top of the\nimage.<\/p>\n\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view03.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view03\"\/>\n<br\/><span class='c1922 g20'>Garmin eTrex 20 is best along here<\/span>\n<br\/>I walked along the north side of the street\n<\/div>\n\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view04.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view04\"\/>\n<br\/><span class='c1922'>All-Around Fail<\/span><\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view05.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view05\"\/>\n<br\/><span class='c1922'>iPhone Least Bad of the Three<\/span><\/div>\n\n<p>The place I'd planned to lunch was closed, so <span class='nobr'>I\nwandered<\/span> around until <span class='nobr'>I found<\/span> <span\nclass='nobr'>a place,<\/span> at the center red dot in the next plot:<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view06.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view06\"\/>\n<br\/><span class='c1922'>Lunch<\/span><\/div>\n\n<p>While there, <span class='nobr'>I sat about<\/span> two yards from <span class='nobr'>a floor<\/span>-ceiling window, and the\ntwo Garmin units reported accuracy as good as 10 meters, but the\nscatterplot above shows that they had no clue.<\/p>\n\n<p>The more modern <span class='g20'>eTrex 20<\/span> perhaps had <span class='nobr'>a better<\/span>\nclue, because while in the restaurant it generally reported less accuracy\nthan the older <span class='hcx'>eTrex Legend HCx<\/span>:<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/JF_i4s_0201_sm.jpg\" width=\"690\" height=\"487\"\nid=\"ii4s_0201\"\/>\n<br\/><span class='c1922'><span class='g20'>&plusmn;16m<\/span> &nbsp;&nbsp;&nbsp;&nbsp;<span class='hcx'>&plusmn;10m<\/span><\/span>\n<br\/>both wrong, but the <span class='g20'>eTrex 20<\/span> less so\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view07.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view07\"\/>\n<br\/><span class='c1922 hcx'>Again the Legend HCx is off<\/span><\/div>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view08.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view08\"\/>\n<br\/><span class='c1922'>Pause<\/span><\/div>\n\n<p>I spent a few minutes inside a building where <span class='nobr'>I had<\/span> poor-to-no\nreception, but instead of realizing the lack of reception and pausing the\ntracklog, the <span class='hcx'>Legend HCx<\/span> gave incorrect readings\nscattered across <span class='nobr'>a span<\/span> of 310 meters. <span class='nobr'>The iPhone<\/span> mostly realized that it had no\nsignal, and its scatter was limited to 80 meters. The <span\nclass='g20'>eTrex 20's<\/span> scatter was about 60 meters.<\/p>\n\n<p>For while the <span class='hcx'>Legend HCx<\/span> just drifted off, at\none point more than 200m off, as illustrated by the outward bow in the blue\nline at the left of the overall plot, which I'll repeat here:<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view10.png\" width=\"753\" height=\"511\"\nid=\"itrack_20110112_view10\"\/>\n<br\/><span class='c1922 hcx'>Legend HCx Going Crazy<\/span><\/div>\n\n<p>I've never seen it show a suspected accuracy that bad, so it wouldn't\nsurprise me if it was showing its normal accuracy of 3m-10m while it was\nactually off by 200m, but unfortunately <span class='nobr'>I wasn't<\/span> looking at it while\nwalking, so <span class='nobr'>I don't<\/span> know what it thought its accuracy was.<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view11.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view11\"\/>\n<br\/><span class='c1922'>Pedestrian Overpass<\/span><\/div>\n\n<p>In the plot above, <span class='nobr'>I crossed<\/span> the street from north to south, then\ndoubled back <span class='nobr'>a bit<\/span> on the pedestrian overpass (just to the left of center),\nto check out the view from above the street. Again, the iPhone seems the\nmost accurate here, though the <span class='g20'>eTrex 20<\/span> at least\nmakes it look like <span class='nobr'>I used<\/span> the crosswalk.<\/p>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view12.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view12\"\/>\n<br\/><span class='c1922'>Not Too Bad Down This Stretch<\/span>\n<br\/>but again, the iPhone is best\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view13.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view13\"\/>\n<br\/><span class='c1922'>Cutting Corners<\/span>\n<br\/>again the iPhone is best\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view14.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view14\"\/>\n<br\/><span class='c1922'>Leaving Yodobashi Camera<\/span>\n<br\/>it all looks crazy, but the iPhone plot is by far the best\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view15.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view15\"\/>\n<br\/><span class='c1922'>More iPhone Bestness<\/span>\n<br\/>I walked along the south side of the street\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view16.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view16\"\/>\n<br\/><span class='c1922'>Heading Down to the River<\/span>\n<br\/><span class='g20'>eTrex 20 seems best<\/span><\/div>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view17.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view17\"\/>\n<br\/><span class='c1922'>Walking Under <span class='nobr'>a Bridge<\/span><\/span><\/div>\n\n<p>The iPhone track looks best, but in this case it might be <span class='nobr'>a side<\/span> effect\nof laying down <span class='nobr'>a plot<\/span> point less often. <span class='nobr'>The two Garmin<\/span> units were set to\nlog locations every second, but the app <span class='nobr'>I used<\/span> on the iPhone seems to have\nlogged <span class='nobr'>a location<\/span> every six or seven seconds, which is just about the time it\ntook to pass under the bridge.<\/p>\n\n<div class='ic wide'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view18.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view18\"\/>\n<br\/><span class='c1922'>Pretty Tight<\/span>\n<br\/>the iPhone's less frequent updates smooths out the jaggies\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view19.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view19\"\/>\n<br\/><span class='c1922'>Just Crazy<\/span>\n<br\/>iPhone wins again\n<\/div>\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-view20.png\" width=\"749\" height=\"503\"\nid=\"itrack_20110112_view20\"\/>\n<br\/><span class='c1922'>Shopping<\/span><\/div>\n\n<p>I don't know how far I actually walked, but <span class='nobr'>I can<\/span> tell you what each tracklog tells me about my three-hour stroll:<\/p>\n\n<ul><li><p>\n\n     The iPhone 4s tracklog contains 1,163 data points, and the distances add up to 11.8km.\n\n     <\/p><\/li><li><p>\n\n     The <span class='g20'>eTrex 20<\/span> tracklog contains 9,973 data points, and the distances add up to 12km.\n\n     <\/p><\/li><li><p>\n\n     The <span class='hcx'>eTrex Legend HCx<\/span> tracklog contains 10,428 data points, and the distances add up to 13.8km.\n\n<\/p><\/li><\/ul>\n\n<p>Remember, the older <span class='hcx'>eTrex Legend HCx<\/span> kept\nreporting <span class='nobr'>a location<\/span> even when it should have realized it had no idea where\nit was, jumping all over the place while <span class='nobr'>I was<\/span> in <span class='nobr'>a building,<\/span> and all that\njumping added up to more &#8220;distance&#8221; and more data points. <span class='nobr'>The other<\/span> units\nwere smarter in that they knew better when the accuracy was not good enough\nto count on.<\/p>\n\n<p>Both Garmin units were powered on for the same amount of time and had\nthe same 1-second logging frequency, so they should in theory contain the\nsame number of data points, but the <span class='g20'>eTrex 20<\/span>\nrecorded 455 fewer, representing seven and <span class='nobr'>a half<\/span> minutes where it choose\nto not record <span class='nobr'>a location<\/span> (because <span class='nobr'>I was<\/span> inside and it didn't have <span class='nobr'>a good<\/span>\nsignal) while the <span class='hcx'>Legend HCx<\/span> continued recording\nits incorrect location.<\/p>\n\n<p style='margin-top:40px'><b>Elevation<\/b><\/p>\n\n<p>Due to the nature of its design, the GPS system is not as accurate with\naltitude as with latitude and longitude, and on some Garmin units this is\nexacerbated with a <a\nhref='\/blog\/2006-04-16\/179'>worthless barometric\nbarometer<\/a>. I've learned to avoid those, so none of my units now have\nthat, so the altitude in today's three plots is all from GPS (or, in the\ncase of the <span class='g20'>eTrex 20<\/span> (and the iPhone!), both GPS and GLONASS).<\/p>\n\n<p>It's almost comical how random it seems. Here are the elevation plots\nfrom each tracklog, along with an extra one for the elevation that Google\nEarth has on file:<\/p>\n\n<div class='ic' style='position:relative; width:766px; margin-bottom:30px'>\n\n<div id='e1922_1'             ><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-Google-Earth-elevation-profile.png\" width=\"766\" height=\"256\"\nclass=\"raw\"\nid=\"itrack_20110112_Google_Earth_elevation_profile\"\/>\n<br\/>Google Earth\n<\/div>\n\n<div id='e1922_2'class='s1922'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-Garmin-eTrex-20-elevation-profile.png\" width=\"766\" height=\"256\"\nclass=\"raw\"\nid=\"itrack_20110112_Garmin_eTrex_20_elevation_profile\"\/>\n<br\/>Garmin eTrex 20 (GPS + GLONASS, 2011)<\/div>\n\n<div id='e1922_3'class='s1922'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-Garmin-eTrex-HCx-elevation-profile.png\" width=\"766\" height=\"256\"\nclass=\"raw\"\nid=\"itrack_20110112_Garmin_eTrex_HCx_elevation_profile\"\/>\n<br\/>Garmin eTrex HCx (GPS, circa 2007)<\/div>\n\n<div id='e1922_4'class='s1922'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/s\/track-20110112-iPhone-4s-elevation-profile.png\" width=\"766\" height=\"256\"\nclass=\"raw\"\nid=\"itrack_20110112_iPhone_4s_elevation_profile\"\/>\n<br\/>iPhone 4s (GPS, circa 2011)<\/div>\n\n<\/div>\n\n<script type=\"text\/javascript\">\nfunction pick1922(which)\n{\n   for (i = 1; i <= 4; i++) {\n      document.getElementById(\"e1922_\" + i).style.visibility = i == which ? 'visible' : 'hidden';\n      document.getElementById(\"b1922_\" + i).style.backgroundColor = i == which ? 'red' : '#555';\n   }\n}\n<\/script>\n\n<center id='c1922'>\n<div id='b1922_1' class='button' onmouseover='pick1922(\"1\")'>Google Earth<\/div>\n<div id='b1922_3' class='button' onmouseover='pick1922(\"3\")'>Garmin eTrex Legend HCx<\/div>\n<div id='b1922_4' class='button' onmouseover='pick1922(\"4\")'>Apple iPhone 4s<\/div>\n<div id='b1922_2' class='button' onmouseover='pick1922(\"2\")'>Garmin eTrex 20<\/div>\n<\/center>\n\n<script type=\"text\/javascript\">\n  pick1922('1');\n<\/script>\n\n<p>The Google Earth data seems closest to reality, except for the odd hump\nin the center (Google thinks there's <span class='nobr'>a hill<\/span> just north of Kyoto Station). <span class='nobr'>The elevation<\/span> in Kyoto slopes down from the north, and you can see in the\nGoogle Earth plot that I'm mostly level as <span class='nobr'>I walk<\/span> east to west, then slopes\ndown as <span class='nobr'>I approach<\/span> Kyoto Station, then at the end climbs steadily as <span class='nobr'>I walk<\/span>\nnorth along the river.<\/p>\n\n<p>The other plots are just ridiculous. (According to the <span class='g20'>eTrex 20<\/span>, at one point <span class='nobr'>I was<\/span> at 225m elevation,\nand according to the <span class='hcx'>Legend HCx<\/span> <span class='nobr'>I was<\/span> at one point walking 0.68 mach!)<\/p>\n\n<p>In the end, <span class='nobr'>I'm dismayed<\/span> at how bad my old <span class='hcx'>Legend\nHCx<\/span> was, and how not-much-better the <span class='g20'>eTrex 20<\/span> is,\nespecially for having twice satellites available to it.<\/p>\n\n<p>But most of all I'm shocked at how good the iPhone 4s results are...\neven judging from this one simple test, it's clearly good enough in outdoor\nuse for geoencoding photos.<\/p>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>In the comments of a recent post about GPS receivers, it was suggested that the GPS receiver in the iPhone was useful for keeping tracklogs. I had bad experiences with iPhone location services when I tested in 2009, but perhaps my test wasn't good, or perhaps the old iPhone 3 wasn't good, so I thought I'd give it another try.<\/p> <p>So, the other day I took three GPS receivers with me while I did some errands. As I'm apt to do lately, I walked.<\/p> <p>This post is a comparison of the resulting tracklogs.<\/p> <p>The three devices I took along on [...]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,1,4],"tags":[],"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/1922"}],"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=1922"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/1922\/revisions"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=1922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/categories?post=1922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/tags?post=1922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}