mapillary tools kennt sich da jemand aus

Ich bin ja hauptsächlich nur noch mit mapillary zugange und wollte das mal optimieren. Schön dass die tools nun auch ganz einfach unter Windows laufen, aber ansonsten bin ich scheinbar zu doof. Kennt sich einer mit den Tools aus?

Ich habe Fotos ohne gps-Daten und ein gpx-file mit den gps-Daten. Ich bekomme die aber nicht zueinander.

Fürs Georeferenzieren von Fotos nehme ich Geosetter. Vor allem Zeitversätze zwischen GPX/GPS und Fotos lassen sich bequem ausprobieren und ausgleichen. JOSM müsste es auch können, das habe ich aber noch nie probiert.

Ich nutze GeoTag und die Zeitdifferenz ermittle ich via Foto vom Display vom Garmin. Die GPS-Zeit (vom Display) kann man in GeoTag eingeben.

Ich verwende JOSM und das Plugin photo_geotagging, um die Position von einem GPX-Track in die EXIF-Daten der Fotos zu übernehmen.

Hast du schon das hier und ff. gelesen?
Habe die mapillary tools bisher nur unter Ubuntu verwendet.

Ich mache das auch die ganze Zeit mit Geosetter, aber ich brauche neben den gps auch den Blickwinkel weil ich mit zwei Kameras arbeite. Bei Geosetter brauche ich dann immer pro Kamera ein eigenen Track, weil Mapillary alles aus einem Track zusammenmischt.

Das geht meiner Meinung nach nur mit dem map_tool, da ist es wohl der --offset_angle. Nur bisher bekomme ich immer nur Fehlermeldungen.

@Harald Hartmann Ja habe ich gelesen, bringt mich aber nicht weiter. Das Tool funktioniert ja nun ohne Scripssprache, so habe ich das verstanden.
Bisher schaffe ich es nur, dass er die jpgs lokalisiert aber den zugehörigen track findet er nicht, obwohl ich Name und Ort angebe. Er sagt immer nur:
Error, \358g file source of gps/time properties does not exist. If geotagging from external log, rather than image EXIF, you need to provide full path to the log file.
Tja und \358g ist der ganze path.

@ToniE Synchonisierungs-Probleme habe ich nicht, da man die Yi-Cam vor der ersten Aufnahme automatisch die Handy-Zeit übernimmt.

Kannst du mal den kompletten Befehl hier in einem Code-Block posten?
Also wenn \358g der ganze path ist, heißt das für mich, dass du eine Datei 358g ohne Endung auf C:\ liegen hast?! Mit “full path” ist im Allgemeinen der komplette Pfad inkl. Datei und Endung gemeint, also z.B. c:\358g\track.gpx
Und dann ist ja auch noch wichtig wo du die Toolexe ausführst und ob du absolut oder relativ arbeitest, weil \358g ist ja absolut und entspricht unter Windows c:\358g

Ich habe das nun mit dem Pfad weggelassen und einfach die exe in den Pfad gepackt, immerhin kam nun keine Fehlermedlung mehr. ob es richtig gemacht wurde kann ich nicht nachprüfen, kenne zumindest kein Programm der die exif nach diesem Parameter ausliest. Das Programm erstellt nun zu jedem Bild ein Unterverzeichnis mit logs, in denen zumindest 270 steht, das wäre ja richtig:
{
“MAPCompassHeading”: {
“TrueHeading”: 270.0,
“MagneticHeading”: 270.0
},
“MAPLatitude”: 49.374453690006575,
“MAPAltitude”: 142.0,
“MAPLongitude”: 8.44748345998261,
“MAPCaptureTime”: “2019_06_27_14_14_27_000”
}

Hier mein Befehl:
.\mapillary_tools process --advanced --rerun --user_name wegavision --import_path . --offset_angle -90 --use_gps_start_time --overwrite_EXIF_gps_tag
scheinbar war auch das --use_gps_start_time wichtig warum weiß ich auch nicht.
Wer mal eine paar Bilder zur Probe hochladen und dann schauen, ob da die Blickrichtung richtig ist.
Lan und lat klappen noch nicht, das mache ich dann immer noch mit dem Geosetter, was nicht wirklich befriedigt.

.\mapillary_tools process --advanced --rerun --user_name wegavision --import_path . --geotag_source_path . --geotag_source gpx --local_time --overwrite_EXIF_gps_tag

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 … :wink: … und sollte sortieren … Nur meinen allerersten Tag habe ich unsortiert tagelang hochgeladen … :wink: )

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 …

Habe mal dein Befehl genommen:
mapillary_tools.exe process --advanced --import_path test --geotag_source gpx --geotag_source_path test.gpx --offset_time **** --user_name wegavision --verbose --rerun
mit der …offset_time kann er bei mir nichts anfangen.
Immerhin weiß ich nun, dass man die paths ohne \ schreibt, aber leider kommt außer Fehlermeldungen nichts und es werden auch keine gps Daten in das exif geschrieben.

Mein Versuch von heute Morgen, den Blickwinkel mit 270° einzutragen hat leider auch nicht geklappt, der Pfeil geht weiterhin nach vornen.

Langsam ist meine Frustschwelle erreicht.

–offset_time **** natürlich mit dem passenden Wert in Sekunden, wenn nötig und in den Bildern nicht schon der passende Wert in UTC steht, der zu den UTC-Zeiten des GPX passt …
Meine Kamera läuft nach mondgeeichter :roll_eyes: Sommerzeit, da habe ich vorhin für den 23.6.19 7299 sec genommen, pro Tag kommt da gefühlt gut 'ne sec dazu … :roll_eyes: Während mein Fahrradnavi sich die UTC-Zeit ja täglich frisch aus dem GPS-Signal holt …

Sagen wir mal so: mit dieser Verzeichnisstruktur und tools und temporär GPX “oben” mit drin spart man sich die ganzen Überlegungen, wie der Pfad zu schreiben ist … Pragmatischer Ansatz … :wink:

Nun ich komme hier nicht weiter, und auch bei Mapillary kann mir keiner helfen, dann lasse ich es eben und mache weiter mit zwei Smartphones, eins pro Kamera.

Was ich aber ausprobiert habe ist das Plugin von JOSM. Und das ist eindeutig schneller als der Geosetter. Man muss nur die den Button zum Start finden, richtig erklärt ist das nirgends.
Hier eine Anleitung:
Plugin installieren
Bilder mit Track hochladen, dabei kann man ja schön die Zeit anpassen, sodass die Bilder richtig liegen.
Dann einfach im Ebenen-Fenster die “georeferenzierten Bilder” rechts anklicken und “Koordinaten in Bild speichern” auswählen, und schon werden sie gespeichert.

Bitte nicht, deine falsch ausgerichteten Sequencen sind sehr “verstörend”.
Für den Abgleich mit den GPX-tracks benutz am besten EXIFTOOL Geht vermutlich auch mit dem Mapillary_tools, hab ich nicht probiert.

exiftool -overwrite_original -geotag "Pfad_zum_GPX-Verzeichnis/*.gpx" -geosync="Zeitdifferenz_in_Sekunden" Bildverzeichnis

Für die Ausrichtung dann die Mapillary_tools:

mapillary_tools process --advanced --import_path "Bildverzeichnis" --user_name wegavision --interpolate_direction --offset_angle "Sichtwinkel" --overwrite_EXIF_direction_tag

Sichtwinkel ist 90 für rechts, -90 für links. Kannst du auch mehrmals ausprobieren, dann noch --rerun anhängen.
Überprüfen kannst du die Änderungen mit Geosetter.