Hier mal mein derzeitiger Arbeitsablauf:
Alle meine Bildersammlungen kommen in das Verzeichnis V.
Da liegen dann das mapillary_tools.exe drin und Unterverzeichnisse tour1, tour2, …
Meine Kamera macht bei längeren Touren mehrere Verzeichnisse, die kommen inzwischen so in tourx rein, GPS nach tourx.gpx in V.
Dann gehe ich erst mal in die einzelnen Unterverzeichnisse V\tourx\10MSDCF, mache da ein Verzeichnis mapillary rein und in V noch ein Verzeichnis ausschuss und sortiere dann erst mal fleißig, die guten ins mapillary-Töpfchen, die schlechten in ausschuss*
Wenn ich mit allen Unterverzeichnissen durch bin, erster Tool-Lauf mit
mapillary_tools.exe process --advanced --import_path tourx --geotag_source gpx --geotag_source_path tourx.gpx --offset_time **** --user_name morwas --verbose --rerun
Dann starte ich mein kleines Tcl-Script, das schreibt ein .gpx mit trackpoints der Bilder in jedes Unterverzeichnis
set dir [ lindex $argv 0 ]
cd $dir
set files [ glob *.JPG ]
set fo [ open maptest.gpx w ]
puts $fo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n\
<gpx xmlns=\"http://www.topografix.com/GPX/1/1\" version=\"1.1\" creator=\"x\">\n\
<metadata>\n\
<time></time>\n\
</metadata>\n\
<trk>\n\
<name>Mapillarykontrolle</name>\n\
<type>bicycle</type>\n\
<desc>Aus den Bildern</desc>\n\
<link></link>\n\
<cmt></cmt>\n\
<trkseg>"
puts $fo "</trkseg></trk>"
set j 0
foreach f $files {
incr j
set o [ catch { exec exiftool.exe $f } oo ]
puts "$j $f"
if { $o != 0 } { puts "exif-error $f" }
set oo [ split $oo "\n" ]
set d 0
foreach l $oo {
if { [ string range $l 0 16 ] == "Image Description" } {
set i [ string first "\{" $l ]
if { $i > 10 } {
incr i 2
set l [ split [ string range $l $i end ] "," ]
foreach ll $l {
set lll [ string length $ll ]
incr lll -1
if { [ string index $ll $lll ] == "\}" } {
incr lll -1
set ll [ string range $ll 0 $lll ]
}
if { [ string first "Latitude" $ll ] >= 0 } {
set lat [ string trim [ lindex [ split $ll ":" ] 1 ] ]
incr d
}
if { [ string first "Longitude" $ll ] >= 0 } {
set lon [ string trim [ lindex [ split $ll ":" ] 1 ] ]
incr d
}
if { [ string first "Altitude" $ll ] >= 0 } {
set ele [ string trim [ lindex [ split $ll ":" ] 1 ] ]
incr d
}
if { [ string first "Time" $ll ] >= 0 } {
set tim [ string trim [ lindex [ split $ll "\"" ] 3 ] ]
incr d
}
if { [ string first "TrueHeading" $ll ] >= 0 } {
set hed [ string trim [ lindex [ split $ll ":" ] 2 ] ]
incr d
}
}
}
}
}
if { $d != 5 } { puts "meta-error $f"
} else {
puts $fo "<wpt lon=\"$lon\" lat=\"$lat\">"
puts $fo "<ele>$ele</ele>"
puts $fo "<desc>$f $hed $tim</desc>"
puts $fo "<name>$f</name>"
puts $fo "</wpt>"
}
}
puts $fo "</gpx>"
close $fo
Gestartet mit tclsh maptest.tcl tourx/sub für jedes der Unterverzeichnisse. Dann mal nachschauen (einfach mal schnell im iD), ob die Bilder halbwegs richtig sitzen oder ich den Zeitversatz noch korrigieren muss mit einem 2. Toollauf.
Danach dann mit
mapillary_tools.exe upload --advanced --import_path tourx --verbose
alles hochschieben, danach aufräumen, indem tourx.gpx und ausschuss* in tourx verschoben werden (blieben die Ausschussbilder in tourx, würden sie vom mapillary-tool mitverarbeitet. Wer mit Sekundentakt radelt, bekommt eindeutig zu viele Bilder …
… und sollte sortieren … Nur meinen allerersten Tag habe ich unsortiert tagelang hochgeladen …
)
Wer ins quick-and-dirty-Tcl-Skript schaut, wird feststellen, dass Mapillary in ein eigenen Exif-Eintrag schreibt, nicht in die üblichen, in denen man die Koordinaten suchen täte, vermutlich weil die noch mehr reinschreiben wollen …