GPS CSV takes more than 2 mins on load

Started by b193709, April 26, 2022, 06:44:07 PM

Previous topic - Next topic

b193709

Hi all:

It's not a problem, since all works perfectly, but my CSV file with all GPS information takes more than 2 mins on load each time I run exiftool for updating photos. This CSV has info from 4+ years of continue location. I was thinking on change the approach, dividing the file on let's say 2 months data.. and calculate the file I need to take based on the info of the photo, but always I'll find some photos that are just on the edge of the file and probably I'll miss some.

I don't know if CSV is not very efficient for storing GPS info. I can convert it into other formats if it helps.

Thanks for any suggestion about.


Phil Harvey

How large is this CSV file?  And what O/S are you running on?

- 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 ($).

b193709


b193709

Let me explain myself better :-).

I have many files that are on different timezone (GMT +0, GMT +1... etc). I need to add GPS info into them.

So.. my process is:

1) Extract the timezone of the photo and store it on the appropriated folder. I.E > if photos where taken on UTC 0, they are stored on /+0000 folder

Up to here it's ok.

2) I'm adding GPS info to them based on the folder they are:

exiftool  -geotag /Volumes/RAM\ Disk/GPX.GPX  '-geotime<${DateTimeOriginal}+00:00' /Volumes/RAM\ Disk/+0000/* -api GeoMaxIntSecs=300

Now .. supposing that I have 4 or more folders (I.E +0000, +0100, +0200, -0100).. I need to repeat 4 times the same process (2-4 minutes x each folder).

I tried to do conversion on 2 folders at the same time:

exiftool  -geotag /Volumes/RAM\ Disk/GPX.GPX  '-geotime<${DateTimeOriginal}+00:00' /Volumes/RAM\ Disk/+0000/*    '-geotime<${DateTimeOriginal}+01:00' /Volumes/RAM\ Disk/+0100/*       -api GeoMaxIntSecs=300


.... and works..

I think the best way of play this is create an array with all the geotime commends and its corresponding folder..

Any better way to approach this?

Thanks

Phil Harvey

That's a large CSV file.  You're lucky you're on MacOS -- you would run out of memory if you were in Windows.  I don't think there is any way to speed up reading such a large file.

Your combined command won't do what you want.  The last valid -geotime option will override earlier ones.

Your best bet to combine this into one command is to do something like this:

exiftool -geotag /Volumes/RAM\ Disk/GPX.GPX '-geotime<${DateTimeOriginal}${directory;$_ = m/\/([-+]\d{2})(\d{2})$/ ? "$1:$2" : undef}' /Volumes/RAM\ Disk/* -r -api GeoMaxIntSecs=300

Here I've taken the time zone from the directory name.

- 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 ($).

b193709

wow.. thanks!

If I understood well this command, basically it will take from the name of the directory (I.E +00:00) this timezone for applying to any file recursive from /Volumes/RAM\ Disk/*

It solves all my problems at once.. since it will goes recursive on all directories automatically, will apply the correct timezone based on the directory !! Awesome!.. Thanks

I have just only one question, I promise. In case my file doesn't have  DateTimeOriginal tag, but has another with same information (Creation time, IE), is there any way of using the 2 options on this command in order to avoid run the command twice?

Thanks

StarGeek

Quote from: b193709 on April 28, 2022, 06:23:32 AMIn case my file doesn't have  DateTimeOriginal tag, but has another with same information (Creation time, IE), is there any way of using the 2 options on this command in order to avoid run the command twice?

See Note #1 under the -TAG[+-^]=[VALUE] option
     Many tag values may be assigned in a single command. If two assignments affect the same tag, the latter takes precedence

For example, this will use DateTimeOriginal if it exists, otherwise it will fall back upon CreateDate.
'-geotime<${CreateDate}${directory;$_ = m/\/([-+]\d{2})(\d{2})$/ ? "$1:$2" : undef}' '-geotime<${DateTimeOriginal}${directory;$_ = m/\/([-+]\d{2})(\d{2})$/ ? "$1:$2" : undef}'
"It didn't work" isn't helpful. What was the exact command used and the output.
Read FAQ #3 and use that cmd
Please use the Code button for exiftool output

Please include your OS/Exiftool version/filetype

b193709

This is perfect. Works like a charm. Thanks a lot.

I'm having many ""No writable tags set from ......................". I guess this is because there is no GPX info aplicable to the picture.. isn't it?

Phil Harvey

Quote from: b193709 on April 28, 2022, 02:24:57 PM
I'm having many ""No writable tags set from ......................".

Either there is no appropriate date/time tag for any of the -geotime commands, or the time is too far from the nearest GPS fix.  The warnings will tell you which is the case.

- 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 ($).

b193709

I'm so ashamed because of asking a lot and probably stupid questions...

On my warnings don't say anything else than " No writable tags set from.... (name of the file)"...

Also.. I'm trying to play this command silent. I saw on the doc that with -q -q -m I can supress all errors and warnings.

Thanks

Phil Harvey

Add -a to see all the warnings, but -q -q will of course suppress these.

- 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 ($).