Error in GPS Track Log web help page?

Started by busywait, August 14, 2017, 12:37:47 PM

Previous topic - Next topic

busywait

Hello,

I think that there is a problem with one of the GPS examples on line at https://exiftool.org/geotag.html

That page shows example gpx.fmt file containing

#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
#[BODY]  <ele>$gpsaltitude#</ele>
#[BODY]  <time>$gpsdatetime</time>
#[BODY]</trkpt>


I am using the command line from that page on Windows using exiftool version 10.6.0.
exiftool -fileOrder gpsdatetime -p gpx.fmt -d %Y-%m-%dT%H:%M:%SZ /Users/Phil/Pictures > out.gpx

That produces an output file that contains this fragment:

<trkpt lat="52.6907463055556" lon="-4.04787252777778">
  <ele>64</ele>
  <time>m-H:SZ</time>
</trkpt>


Note that the time element above is not a time.

If I add an additional # character at the end of $gpsdatetime# in the template, as below, then I get the output that I expect.

#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
#[BODY]  <ele>$gpsaltitude#</ele>
#[BODY]  <time>$gpsdatetime#</time>
#[BODY]</trkpt>


The correct output:

<trkpt lat="52.6907463055556" lon="-4.04787252777778">
  <ele>64</ele>
  <time>2017:08:03 09:37:11Z</time>
</trkpt>


Is this a typo in the example online, or a problem with the way that I am trying to use exiftool?

Phil Harvey

The problem is that you need to double the "%" characters if you are running the command from a Windows .BAT file

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

busywait

Quote from: Phil Harvey on August 14, 2017, 01:19:51 PM
The problem is that you need to double the "%" characters if you are running the command from a Windows .BAT file

Which actually means I need *8* %s before each format specifier in this line of my batch file:

@set "action_params=-if "$gpslongitude ge 0" -fileOrder DateTimeOriginal -p "%runner_dir%_gps_gpx.fmt" -d %%%%%%%%Y-%%%%%%%%m-%%%%%%%%dT%%%%%%%%H:%%%%%%%%M:%%%%%%%%SZ -@ %runner_dir%_gps_gpx.txt"


But wow, that worked! Thanks :)

busywait

I've worked out how to get the -d option in to my ARGFILE (_gps_gpx.txt in the command line above). When I first tried it, it didn't work - I've worked out that trailing spaces were my problem.

Phil Harvey

Quote from: busywait on August 14, 2017, 04:08:15 PM
Which actually means I need *8* %s before each format specifier in this line of my batch file:

@set "action_params=-if "$gpslongitude ge 0" -fileOrder DateTimeOriginal -p "%runner_dir%_gps_gpx.fmt" -d %%%%%%%%Y-%%%%%%%%m-%%%%%%%%dT%%%%%%%%H:%%%%%%%%M:%%%%%%%%SZ -@ %runner_dir%_gps_gpx.txt"

Ouch!  If you had wanted a literal "%" in the date string, then you would have needed 16 %'s in your string (which happens often when setting file names from date/time values -- eg. to pass through the ExifTool formatting codes like %e).  That would be 4 levels of escapement.  Ridiculous.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).