Converting saved locations to .wpt

May I download saved locations points from Garmin 955 and convert them to .wpt files?

What simple methods are?

  • Posted in the wrong directory - remove to 955 please!

  • To my knowledge, there are no simple methods to access the Location/Lctns.fit file on Garmin devices. The ´hard´ way is to mount the device on a computer and copy the file into your own filesystem for further processing, the simplest of which would be to write a program to parse the binary data and dump the information in your chosen format to the text file.

    For those who are uncomfortable with binary, there is always the FIT SDK; software development kit (nowadays downloadable from https://developer.garmin.com/fit/download/ ) Within that bundle we can find the FitCSVTool ( https://developer.garmin.com/fit/fitcsvtool/ ) which translates the binary data to comma seperated values in plain text. A lot of commas, but plain text...

    However, further conversions of the data is necessary. I looked this up more than 10 years ago and here is what I wrote in a comment section of a linux bash script:

    # Garmin store GPS data as "semicircles" (180 degrees to 2^31 semicircles)
    # *** Below site-page is not valid anymore ***
    # See eg http://www.gps-forums.net/explanation-sought-concerning-gps-semicircles-t107
    2.html
    # as to why... We get WGS84 decimal (lat, long) not degrees/minutes/seconds when
    # converting with: semicircles*(180/2^31). 2^31 = 2147483648 and
    # 180 / 2147483648 = 0.00000008381903171539 We set that resulting number string
    # as a variable to cut down on processing:
    
    MULTVALUE="0.00000008381903171539"
    
    # Converting WGS84 decimal to degrees/minutes/seconds example:
    # 38.446810 - 38 = 0.44681 * 60 = 26.8086 - 26 = 0.8086 * 60 = 48,516 ~= 49
    # That is: 38 deg 26 min 49 sec. Or degrees/minutes decimal: 38 deg 26.8086 min.
    
    # *Observe, printf does NOT work correctly with strings mimicing floats (fractions)*
    # *I just chop off any fractions in the final output from the computations...*
    # Converting "Elevation" from/to Garmin values is done by the 'FIT SDK'
    # formula "5 * m + 500" and works like this in bash:
    # *** Garmin number 2918 (which is 83 metres on the watch)***
    # echo '(2918 / 5) - 500' | bc -l
    # 83.60000000000000000000
    # echo '(2918 / 5) - 500' | bc
    # 83
    

    That´s all there is to it really. The other day I saved three locations with my FR955 and compared the .fit file with one I had back in 2015 (from a FR630) and another from a Fenix5X,  and the data structures are basically identical, give or take a few commas... Stripping out header junk the entries look like this in a .csv:

    Data,2,unknown,unknown,"29 Sep 17:49",,unknown,"670035581",,unknown,"162276085",,unknown,"0",,unknown,"3010",,,,,,,,,,,,,,
    Data,2,unknown,unknown,"29 Sep 17:53",,unknown,"670045518",,unknown,"162267493",,unknown,"1",,unknown,"2943",,,,,,,,,,,,,,
    Data,2,unknown,unknown,"29 Sep 17:57",,unknown,"670073313",,unknown,"162267471",,unknown,"2",,unknown,"2966",,,,,,,,,,,,,,
    

    The dates and times are there instead of a named location (didn't have the patience to fiddle with buttons on the watch). Another info file I wrote back in the days states (cropped to relevant part):

    000000d0  7f 56 02 00 ff ff 82 0a  ff ff 02 ff ff ff ff 48  |.V.............H|
                                             -------------- -->
                                                    |
    Data 2 Begin -----------------------------------.
    
    000000e0  65 6d 2d 46 2d 54 79 72  69 6e 67 65 00 00 00 40  |em-F-Tyringe...@|
              <-------------------------------------------- -->
                                     |                       |
    Space for 16-byte Name ----------. Max 15 can be used!   |
     

    In summary, the data from the Garmin .fit-file is dead simple to convert once you know how, but then comes formatting it in your preferred manner. I wrote a bash script which worked wondrously until I becan cleaning it up for posting here, and now I can't find the error point... Have to write it again from scratch. Bash is really hard to use when you want to strip and reformat data. The formatting I had chosen was from a reddit post about formatting problems (yeah):

    .wpt file frustration

    https://old.reddit.com/r/freeflight/comments/1banj66/wpt_file_frustration/

    [...]

    The wpt file is like this:
    
        $FormatGEO
        A01 N 45 08 50.31 E 007 27 37.35 425 VAL DELLA TORRE
        A02 N 45 18 38.58 E 007 32 35.28 573 CORIO
        A03 N 45 18 32.59 E 007 35 19.10 392 ROCCA
    

    If you can use a bash script (should be possible to run with a bit of work - ie a *nix command shell - in Windows) I can try and resurrect my first try. Or you might find someone to make it in python, perl or whatever. Though, you have to state the exact format of the output text.

    Edit: FR630 was in 2015, not 2013...