Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: GPS-Daten in Bildern auslesen

GPS-Daten in Bildern auslesen
29.06.2020 10:54:05
Joachim
Hallo zusammen, ich habe Bilder mit der Drohne aufgenommen (JPGs). Wenn ich im Explorer mit der rechten Maustaste auf die Bilddatei klicke und Eigenschaften wähle, kann ich die GPS-Daten sehen. Kann ich in Excel diese GPS-Daten (Breiten- und Längengrad, Höhe) aus den Bilddateien auslesen?
Schon mal danke für Eure Tipps!
Joachim
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GPS-Daten in Bildern auslesen
29.06.2020 10:59:49
Daniel
HI
such mal im WWW nach "GetDetailsOf" oder "excel metadaten auslesen jpg"
da sollte es was geben.
Gruß Daniel
AW: WIA
29.06.2020 11:22:38
Fennek
Hallo,
Excel kann über die COM-Schnittstelle WIA (Windows-Image-Acquisition) ansteuern und damit in vielen Bild-Formaten, z.B. jpg, auch die GPS-Daten auslesen.
Es dürfte aber einfacher sein, ein Foto-Tool, z.B."Exif-Tools" zu nutzen, die GPS-Daten in eine Ascci-Datei zu schreiben und diese in Excel zu importieren.
mfg
Anzeige
AW: GPS-Daten in Bildern auslesen
29.06.2020 12:14:02
volti
Hallo Joachim,
hier ein kleines Beispiel für DetailsOf:
Sub GetFilesDetails()
'Sub ermittelt einige Datei-Parameter
 Dim oFile As Object, i As Integer
 Dim sPath As String, sFile As String
 
 sPath = "D:\Pictures\Fotos\2020\"
 sFile = "20200206_201737.jpg"
 With CreateObject("Shell.Application").Namespace(CVar(sPath))
   Set oFile = .ParseName(sFile)
   For i = 1 To 50
      Debug.Print i, .getdetailsof(oFile, i)
   Next i
 End With
End Sub
 

viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: GPS-Daten in Bildern auslesen
29.06.2020 13:09:38
Joachim
Hallo zusammen, Danke für die Tipps
@ Karl-Heinz: Habe deinen Code ein bisschen geändert und schreib mir die Werte in ein Tabellenblatt, und die Laufschleife erweitert. Ab 291 wird nichts mehr geschrieben, die GPS-Daten sind aber nicht dabei. (Laufschleife geht bis 10.000). Da wird wohl nichts mehr kommen....
Trotzdem Danke
Anzeige
AW: GPS-Daten in Bildern auslesen
29.06.2020 14:17:09
volti
Ok,
ein Versuch war's wert.
VG KH
AW: Quick & dirty
29.06.2020 13:36:45
Fennek
Hallo,
vielleicht kann man die GPS-Daten auch direkt als Ascii lesen. Könnstest du eine Beispieldatei hochladen?
(falls jpg nicht gehen sollte, einfach ein .txt anhängen, also aus "Bild.jpg" wird "Bild.jpg.txt")
mfg
AW: Quick & dirty
29.06.2020 14:24:05
volti
Hallo Fennek,
da bin ich mal gespannt, ob Du/man da fündig wird.
Ich hatte aus bestimmten Grunde auch schon Bilddateien per Binärdaten auseinandergenommen.
Klartexte wie z.B. Firma, Kameratyp und Datum kann man erkennen und sind mit Chr(0) abgeschlossen, Zahlenwerte z.B. Bildschirmgröße habe ich nicht gefunden (möglicherweise codiert).
Die sind aber auch nicht immer an der gleichen Stelle, da müsste man die ExIf-Struktur kennen bzw. anwenden.
viele Grüße
Karl-Heinz
Anzeige
AW: Quick & dirty
29.06.2020 14:47:05
Joachim
Hallo,
habe die Datei in Photoshop auf kleinste Größe (Qualität 0) gespeichert, ist immer noch zu groß zum uploaden.
Gruß
Joachim
AW: VBA-WIA Beispielcode
29.06.2020 15:04:05
Fennek
Hallo,
Volti hat Recht, die GPS-Daten sind binär.
Vor einiger Zeit habe ich einen VBA-Code erstellt, schau mal, ob du damit zurecht kommst:

'############## GPS #################
Function GPS_Loc(Fl As String) As String   ' Übergabe eines Pfad & Dateinamens
Dim Img ' as Imagefile
Dim GPS(4) As String
Set Img = CreateObject("WIA.ImageFile")
Call Img.LoadFile(Fl)
If Img.Properties.Exists("1") Then GPS(0) = Img.Properties("1").Value    'N
If GPS(0) = "" Then GPS_Loc = "nv": Exit Function
If Img.Properties.Exists("2") Then
For i = 1 To Img.Properties("2").Value.Count
If Err.Number  0 Then GPS_Loc = "error": Err.Clear: Exit Function
GPS(1) = GPS(1) & Img.Properties("2").Value.Item(i) & Choose(i, "° ", "' ", "")
Next i
End If
If Img.Properties.Exists("3") Then GPS(2) = Img.Properties("3").Value 'W/E
If Img.Properties.Exists("4") Then
For i = 1 To Img.Properties("4").Value.Count
GPS(3) = GPS(3) & Img.Properties("4").Value.Item(i) & Choose(i, "° ", "' ", "")
Next i
End If
If Img.Properties.Exists("6") Then GPS(4) = Img.Properties("6").Value
If Len(GPS(1)) > 5 Then
GPS_Loc = GPS(0) & GPS(1) & ", " & GPS(2) & GPS(3) & ", Höhe: " & Format(GPS(4), "0.00  _
m")
Else
GPS_Loc = "nv"
End If
ERASE GPS
'einzelne Fotos, alle Propeties
'andere Methoden: p.value.Numerator, p.value.Denumerator
'if p.type = RationalImagePropertyType Then    s = s & p.Value.Numerator & "/" & p.Value. _
Denominator
'if p.Type = StringImagePropertyType then
'if p.SubType  UnspecifiedSubType then
'if p.Value  p.SubTypeDefault then
'if p.IsReadOnly then
'select Case p.SubType
'    Case FlagSubType
'        For i = 1 To p.SubTypeValue.Count
'            s = s & p.SubTypeValues(i)
'            If i  p.SubTypeValues.Count Then s = s & ", "
'        Next i
'    Case ListSubType
'         s = s & " [ valid values include:"
'        For i = 1 To p.SubTypeValues.Count
'            s = s & p.SubTypeValues(i)
'            If i  p.SubTypeValues.Count Then
'                s = s & ", "
'            End If
'        Next
'    s = s & " ]"
'    Case RangeSubType
'        s = s & " [ valid values in the range from " & _
'               p.SubTypeMin & " to " & p.SubTypeMax & _
" in increments of " & p.SubTypeStep & " ]"
'   Case Else 'UnspecifiedSubType
'   End Select
'   If Img.Properties.Exists("40095") then
'   Set v = Img.Properties("40095").Value
'   s = s & "Subject = " & v.String & vbCrLf
'   End If
'For Each p In Img.Properties
'    Debug.Print p.propertyid, p.Name, p.Value, p.isvector
'Next p
'Alternative
'For i = 1 To objImage.Properties.Count
'    Debug.Print i, Img.Properties(i).Name, Img.Properties(i).Value
'Next i
'Set v = CreateObject("WIA.Vector")
'v.Add 1
'v.Add 42
'v.Remove 1
'v.add "Text"
'MsgBox v(1)
Set Img = Nothing
End Function
Für wenige Fotos ist der Code ok, für viele dauert er zu lange, da jedesmal "WIA" erneut angelegt wird. Wenn man WIA einmal anlegt und dann eine Schleife über alle Fotos legt, wird es viiiiiiel schneller.
mfg
Anzeige
AW: VBA-WIA Beispielcode
30.06.2020 09:18:34
Joachim
Klappt SUPER!!!
Vielen, vielen Dank!!!
Joachim
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

GPS-Daten aus Bildern auslesen


Schritt-für-Schritt-Anleitung

Um GPS-Daten aus Bildern auszulesen, kannst Du folgende Schritte befolgen:

  1. Bild auswählen: Stelle sicher, dass das Bild GPS-Daten enthält. Diese Informationen sind meist in den EXIF-Daten gespeichert.

  2. VBA-Editor öffnen: In Excel kannst Du den Visual Basic for Applications (VBA)-Editor öffnen, indem Du Alt + F11 drückst.

  3. Neues Modul erstellen:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineArbeitsmappe).
    • Wähle Einfügen > Modul.
  4. VBA-Code einfügen: Füge den folgenden Code in das Modul ein, um die GPS-Daten auszulesen:

    Sub GetFilesDetails()
       Dim oFile As Object, i As Integer
       Dim sPath As String, sFile As String
    
       sPath = "D:\Pictures\Fotos\2020\"
       sFile = "20200206_201737.jpg"
    
       With CreateObject("Shell.Application").Namespace(CVar(sPath))
           Set oFile = .ParseName(sFile)
           For i = 1 To 50
               Debug.Print i, .getdetailsof(oFile, i)
           Next i
       End With
    End Sub
  5. Makro ausführen: Führe das Makro aus, um die GPS-Daten zu erhalten. Die Daten werden im Direktfenster angezeigt.

  6. Daten in Excel importieren: Kopiere die erhaltenen Daten aus dem Direktfenster in ein Arbeitsblatt.


Häufige Fehler und Lösungen

  • Fehler: GPS-Daten nicht vorhanden: Überprüfe, ob das Bild tatsächlich GPS-Daten enthält. Du kannst dies tun, indem Du mit der rechten Maustaste auf die Bilddatei klickst und die Eigenschaften aufrufst.

  • Fehler: Das Makro läuft nicht: Stelle sicher, dass Du die richtigen Berechtigungen hast, um Makros auszuführen. Überprüfe auch die Sicherheitseinstellungen in Excel.

  • Fehler: Daten werden nicht angezeigt: Möglicherweise sind die GPS-Daten in einem anderen Format gespeichert. Versuche, die Bilder in einem anderen Format zu speichern oder überprüfe die EXIF-Daten.


Alternative Methoden

Wenn Du nicht mit VBA arbeiten möchtest, kannst Du folgende Methoden nutzen:

  • ExifTool: Ein leistungsstarkes Tool, das EXIF-Daten aus Bildern auslesen kann. Es kann die GPS-Daten in eine Textdatei exportieren, die Du in Excel importieren kannst.

  • Spezielle Apps: Es gibt Apps wie Geosetter oder GeoExif, die GPS-Daten aus Fotos auslesen und exportieren können.


Praktische Beispiele

  1. GPS-Daten aus einem JPG-Bild auslesen:

    • Verwende den oben genannten VBA-Code, um die Daten aus einem Beispielbild namens 20200206_201737.jpg auszulesen.
  2. Daten in Excel importieren:

    • Nach dem Auslesen der Daten kannst Du sie in Excel weiterverarbeiten, z.B. um eine Karte mit den GPS-Koordinaten zu erstellen.

Tipps für Profis

  • Automatisierung: Erstelle eine Schleife, die mehrere Bilder in einem Rutsch verarbeitet. Dies spart Zeit, besonders wenn Du viele Bilder hast.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im VBA-Code, um mit Bildern umzugehen, die keine GPS-Daten enthalten.

  • Nutzung von Geocaching: Integriere die GPS-Daten in Geocaching-Projekte, indem Du die Koordinaten in eine Geocaching-App überträgst.


FAQ: Häufige Fragen

1. Wie kann ich GPS-Daten aus vielen Bildern gleichzeitig auslesen?
Du kannst eine Schleife in Deinem VBA-Code einfügen, die durch alle Bilddateien in einem bestimmten Ordner iteriert.

2. Welche Bildformate unterstützen EXIF-Daten?
Die meisten JPG-Dateien enthalten EXIF-Daten, aber auch TIFF- und einige RAW-Formate unterstützen diese Informationen.

3. Kann ich GPS-Daten auch ohne Excel auslesen?
Ja, mit Tools wie ExifTool oder speziellen Apps kannst Du GPS-Daten direkt aus den Bildern auslesen, ohne Excel zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige