• [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen 4 0 5 1
Currently:  

Author Topic: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen  (Read 104120 times)

0 Members and 1 Guest are viewing this topic.

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Hallo zusammen,

nachdem ich hier im Forum keine einfache Lösung gefunden habe, die GPS Exif Informationen der Bilder mittels Google Maps darzustellen, habe ich mal schnell einen Hack integriert, der die Daten aus den Bilder ausliest und als kleine Google Map darstellt.

Ein Screenshot, wie das ganze aussieht, im Anhang.

Habe dazu die integrierte EXIF Funktion von 4Images 1.7.4 erweitert. Alle Änderungen sind in der Datei functions.php eingebunden, Exif Flags Namen sind in der Sparchdatei main.php im Verzeichnis "lang\deutsch" eingefügt (Abschnitt "EXIF Tags")

Code: [Select]
$lang['exif_GPSLatitudeRef'] = "GPS Breitengrad Referenz:";
$lang['exif_GPSLatitude'] = "GPS Breitengrad";
$lang['exif_GPSLongitudeRef'] = "GPS Längengrad Referenz";
$lang['exif_GPSLongitude'] = "GPS Längengrad:";
$lang['exif_GPSAltitude'] = "GPS Höhe:";


Hier meine Ergänzungen und die EXIF Funktion der functions.php (aus dem Include Verzeichnis):

Code: [Select]
function get_exif_info($exif) {
  $exif_match = array();
  $exif_match['Make'] = "make";
  $exif_match['Model'] = "model";
  $exif_match['DateTimeOriginal'] = "datetime";
  $exif_match['ISOSpeedRatings'] = "isospeed";
  $exif_match['ExposureTime'] = "exposure";
  $exif_match['FNumber'] = "aperture";
  $exif_match['FocalLength'] = "focallen";
// GPS EXIF Variablen Start  - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
  $exif_match['GPSLatitude'] = "GPSLatitude";
  $exif_match['GPSLatitudeRef'] = "GPSLatitudeRef";
  $exif_match['GPSLongitude'] = "GPSLongitude";
  $exif_match['GPSLongitudeRef'] = "GPSLongitudeRef";
  $exif_match['GPSAltitude'] = "GPSAltitude";
// GPS EXIF Variablen Ende

  $exif_array = array();
  if (is_array($exif)) {
    foreach ($exif as $key => $val) {
      if (isset($exif_match[$key])) {
        $exif_info = $val;
        if ($key == "DateTimeOriginal") {
          $exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);
        }
        elseif ($key == "ExposureTime") {
  $exposure = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
        }
        elseif ($key == "FNumber") {
  $aperture = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "F/" . ($aperture[0] / $aperture[1]);
        }
        elseif ($key == "FocalLength") {
  $focalLen = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($focalLen[0] / $focalLen[1]) . "mm";
        }

// GPS EXIF START - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
        elseif ($key == "GPSLatitudeRef") {
  if ($exif_info == "N") {
  $GPSLatitudeRef = "Nord";
  $GPSLatfaktor = 1;
  } else {
  $GPSLatitudeRef = "Süd";
  $GPSLatfaktor = -1;
  }
 
        }
        elseif ($key == "GPSLongitudeRef") {
  if ($exif_info == "E") {
  $GPSLongitudeRef = "Ost";
  $GPSLongfaktor = 1;
  } else {
  $GPSLongitudeRef = "West";
  $GPSLongfaktor = -1;
  }
}
        elseif ($key == "GPSLatitude") {
        $GPSLatitude_h = explode("/", $exif_info[0]);
        $GPSLatitude_m = explode("/", $exif_info[1]);
        $GPSLatitude_s = explode("/", $exif_info[2]);
       
        $GPSLat_h = $GPSLatitude_h[0] / $GPSLatitude_h[1];
        $GPSLat_m = $GPSLatitude_m[0] / $GPSLatitude_m[1];
        $GPSLat_s = $GPSLatitude_s[0] / $GPSLatitude_s[1];
       
        $GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
       
        $exif_array[$exif_match[$key]] =  $GPSLatitudeRef . " " .$GPSLat_h . "° ". $GPSLat_m . "' " . $GPSLat_s . "'' ($GPSLatGrad)";
        }
        elseif ($key == "GPSLongitude") {
        $GPSLongitude_h = explode("/", $exif_info[0]);
        $GPSLongitude_m = explode("/", $exif_info[1]);
        $GPSLongitude_s = explode("/", $exif_info[2]);
       
        $GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
        $GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
        $GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
       
        $GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
       
        $exif_array[$exif_match[$key]] =  $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
        }
        elseif ($key == "GPSAltitude") {
      $GPSAltitude = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($GPSAltitude[0] / $GPSAltitude[1]) . " Meter über NN";
        } 
// GPS EXIF ENDE

        else {
          $exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }
  }
  return $exif_array;
}

Desweiteren habe ich die EXIF Ausgabe Funktion ergänzt:

Code: [Select]
          foreach ($exif_array as $key => $val) {
// GPS EXIF Modifikatio START
          if (($key != "GPSLongitudeRef") &&  ($key != "GPSLatitudeRef")) {
          if ($key == "GPSLongitude") {
          $GPSLongtude = substr (strrchr($val, "("), 1);
          $GPSLongtude = substr ($GPSLongtude,0, strlen($GPSLongtude)-1);
          }
          if ($key == "GPSLatitude") {
          $GPSLatitude = substr (strrchr($val, "("), 1);
          $GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);
          }
// GPS EXIF Modifikatio ENDE
                      $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
                      $site_template->register_vars(array(
                        "exif_value" => format_text($val),
                        "exif_name" => $lang['exif_'.$key],
                        "row_bg_number" => $row_bg_number
                        ));
                        $exif_info .= $site_template->parse_template("exif_bit");
// GPS EXIF Modifikatio START
                  }
          }
          if (($GPSLongtude != "") && ($GPSLatitude != "")) {
          $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
          $Beschreibung = "Google Map";
// Google Map Settings & Google API Key (http://www.google.com/apis/maps/)
          $Karte = "<a href = 'http://maps.google.de/maps?ll=$GPSLatitude,$GPSLongtude&spn=0.005,0.005&t=h' target='_blank'>Position in neuer Google Maps öffnen</a><br>
                      <script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=PUT_YOUR_API_KEY_HERE!!!'
      type='text/javascript'></script>
    <script type='text/javascript'>
    //<![CDATA[
     function load() {
        if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById('map'));
        map.setCenter(new GLatLng($GPSLatitude,$GPSLongtude), 18, G_HYBRID_MAP);
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());
      map.addControl(new GOverviewMapControl());
      var infoTabs = [
  new GInfoWindowTab('Info', '<font color=\'#000000\'>Die Aufnahme wurde an dieser Position aufgenommen</font>'),
  new GInfoWindowTab('Koordinaten','<font color=\'#000000\'>Breitengrad: $GPSLatitude<br>Längengrad: $GPSLongtude</font>')
];
      var marker = new GMarker(map.getCenter());
GEvent.addListener(marker, 'click', function() {
  marker.openInfoWindowTabsHtml(infoTabs);
  });
  map.addOverlay(marker);
marker.openInfoWindowTabsHtml(infoTabs);
      }
    }
    //]]>
    </script>
  <body onload='load()' onunload='GUnload()'>
    <div id='map' style='width: 700px; height: 300px'></div>
          ";
          $site_template->register_vars(array(
                        "exif_value" => $Karte,
                        "exif_name" => $Beschreibung,
                        "row_bg_number" => $row_bg_number
                        ));
                        $exif_info .= $site_template->parse_template("exif_bit");
          }
// GPS EXIF Modifikatio ENDE
        }
      }
    }
    $site_template->register_vars(array(

Wer keine Lust hat die zwei Blöcke in die functions.php hinzukopieren, der läd sich einfach meine functions.php herunter.

Ihr müßt auf jeden Fall für Euch einen eigenen Google Map Api Key erstellen, den es einfach hier gibt: http://www.google.com/apis/maps/signup.html Sucht Anschließend in Eurer modifizierten functions.php nach "PUT_YOUR_API_KEY_HERE!!!" und kopiert diesen dorthin.

Das ganze ist bestimmt nicht die schönste Art, wie die Google Mapp integriert ist, aber sie funktioniert.
Die Größe der Google Karte kann über die Parameter innerhalb des Google Codes verändert werden.

Über Eure Anregungen und Verbesserungen würde ich mich freuen, auch ob es bei Euch auch funktioniert.

Gerade noch entdeckt: Hatte kleinen Fehler in der Extrahierung der GPS Koordinaten für Google, sollte nun gefixt sein.
- Ein weiterer kleiner Bug, der Koordinaten südlich des Äquators und Westlich von Greenwich falsch darstellte. Koordinaten für Google müssen dann negativ sein.

- Ost und West Längengrad wurden nicht unterschieden, da IF-Abfrage auf "O" eingestellt war. Muß "E" heißen. Der Block muß dann so aussehen:
Code: [Select]
elseif ($key == "GPSLongitudeRef") {
  if ($exif_info == "E") {
  $GPSLongitudeRef = "Ost";
  $GPSLongfaktor = 1;
  } else {
  $GPSLongitudeRef = "West";
  $GPSLongfaktor = -1;
  }

Viel Spaß

Erik
http://www.koelschwasser.de
http://www.koelschwetter.de


PS: Wer GPS Wegdaten hat, kann diese mit dem kostenlosen Programm "Location Stamper" von MS in seine Bilder schreiben:
http://research.microsoft.com/research/downloads/Details/eadb6a33-b1b8-4c4d-b713-64fae728f74f/Details.aspx

PPS: Habe meine erweiterte Functions.php mal angehangen. Kleine kosmetische Verbesserungen.

PPPS: Die angehangene function.php ist für Version 1.7.4 - eine aktualisierte Version wird demnächst erscheinen.
« Last Edit: February 12, 2008, 12:46:12 PM by Erik »

Offline KurtW

  • 4images Guru
  • *******
  • Posts: 2.778
    • View Profile
    • Malediven-Bilder ~~Dreams~~
Re: MOD EXIF GPS Informationen in Google Map
« Reply #1 on: July 15, 2007, 04:38:31 PM »
Hallo,

habs zwar noch nicht getestet, aber geile Sache!!

Jetzt bräuchte ich nur noch ne Digicam oder einen GPS Logger.
Danke nochmals für den Mod :wink:


Gruß
Kurt

SnaFy

  • Guest
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #2 on: July 16, 2007, 04:28:29 PM »
plz in

english

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #3 on: July 16, 2007, 04:39:46 PM »
plz in

english
Sorry, this is a german page, if you want it in english, plz try

http://babelfish.altavista.com/

Erik

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #4 on: July 17, 2007, 09:19:29 AM »
Hallo,

habe nun meine Urlaubsfotos alle Getaggt, hier einige Tips, wie Ihr das am besten machen könnt.
Hier einige kostenlose Programme:

Der einfachste Weg, ist ein GPS Log-File. Leider ist dies oft im falschen Format, Ihr bracht ein GPX File-Format, das Ihr mit dem Tool G7ToWin umwandeln könnt:
http://gpsinformation.org/ronh/

Mit dem Tool Location Stampter von Microsoft könnt Ihr dann das GFX File gegen Eure EXIF Bilder abgleichen lassen:
http://research.microsoft.com/research/downloads/Details/eadb6a33-b1b8-4c4d-b713-64fae728f74f/Details.aspx

Habt Ihr kein GPS Logfile, so könnt Ihr mit Google Picasa2 (http://picasa.google.de) und Google Earth (http://earth.google.de) die Bilder von Hand geocoden.

Viel Spaß

Grüße

Erik

PS: Google Earth kann auch schön Eure GPX Files auf der Karte darstellen

Offline Patrick81

  • Newbie
  • *
  • Posts: 27
    • View Profile
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #5 on: August 27, 2007, 04:42:50 PM »
Hallo Erik,

Gibt es auch eine Möglichkeit, diesen Mod in 4Images 1.7.2 einzubauen?

Einfach so funktioniert nicht (habe ich bereits versucht).

In 1.7.2 gibt es wohl noch nicht die Funktionen von 1.7.4, welche benötigt werden?
Ich habe in 1.7.2 schon soviel Zeit mit Mods usw. investiert, dass ich nicht noch einmal alles in 1.7.4 einrichten möchte.

Grüße
Pat

--
habe noch installiert:

4images EXIF MOD
Version : 0.3
Date: 2003-01-17
By: fatman (fatman_li@yahoo.com.hk)
« Last Edit: August 27, 2007, 05:05:29 PM by Patrick81 »

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #6 on: August 27, 2007, 05:19:31 PM »
Gibt es auch eine Möglichkeit, diesen Mod in 4Images 1.7.2 einzubauen?


Hi Pat,

unterstützt die Version 1.7.2 bereits EXIF Informationen, ich vermute, das hierbei einige Routinen fehlen, so daß dies nicht funktionieren wird.

Der Sicherheit Deiner Seite, würde ich unbedingt auf die aktuelle Version ubgraden, da hier doch einige Sicherheitslöscher in 4images gefixt wurden. Siehe oben rechts unter dem Banner in der NEWS BOX.

Es bringt nichts, die alte Version mit Fehler online zu lassen, nur um einige Mods am laufen zu halten. Das Risiko, das der Server gehackt wird, wäre mir zu hoch.

Kann Dir daher zur alten Version nichts sagen und Dir nur den Tipp geben, Deine Seite auf die letzte Version zu bringen, die derzeit 1.7.4 ist. Dann sollte auch der Google Maps Mod funktionieren.

Sorry, daß ich Dir nichts besseres dazu sagen kann.

Grüße

Erik

Offline Patrick81

  • Newbie
  • *
  • Posts: 27
    • View Profile
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #7 on: August 28, 2007, 01:03:33 PM »
ok,

habe deinen Rat befolgt und nun 1.7.4 installiert - dein Mod funktioniert auch wunderbar - Respekt!!
Kannst du mir noch mitteilen, wo ich was ändern muss, damit

a) die Google Map erst beim Klick auf den Link Google Map unten eingeblendet wird (Standard ausgeblendet)
b) der Zoom -3x Weg ist (3x auf - Zoom klicken, damit man eine Übersicht erhält

Danke für die tolle Leistung!
Pat

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #8 on: August 28, 2007, 01:27:55 PM »
ok,

habe deinen Rat befolgt und nun 1.7.4 installiert - dein Mod funktioniert auch wunderbar - Respekt!!
Kannst du mir noch mitteilen, wo ich was ändern muss, damit

a) die Google Map erst beim Klick auf den Link Google Map unten eingeblendet wird (Standard ausgeblendet)
b) der Zoom -3x Weg ist (3x auf - Zoom klicken, damit man eine Übersicht erhält

Danke für die tolle Leistung!
Pat

Hi Pat,

prima, das Update macht Deine Seite sicherer und vielenm Dank für das Lob.

Zu a:
Schau mal unter google nach java script ausblende von elementen, z.B.
http://www.informatik.ku-eichstaett.de/studium/skripte/ws0607/webprogi/javascript2.php

Dort ist besschrieben, wie Du das aufgebaut ist.
Du mußt dazu dann den gesammten Google Maps bereich innerhalb der javascript Routine kapseln, die dann dynamisch das ein und ausblendet.
1. Schritt währe die google maps routine ausschneiden und dort das dynamisch ein und ausblenden einbauen. Funktioniert dieser Bereich und Du kannst bereits einfach Testelemente  aus und einblenden, kommt der google maps anstelle des Testelementes hinein.

zu b)
Der Bereich mit dem Zoom sind die vordefinierten Routinen von Google maps, die Du unter http://code.google.com/support/bin/topic.py?topic=10028 findest.

Viel Spaß

Grüße

Erik

Offline Patrick81

  • Newbie
  • *
  • Posts: 27
    • View Profile
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #9 on: August 28, 2007, 02:11:41 PM »
Für die anderen:

Add the code to center the map at the latitude/longitude you found in Section 3. The line that centers the map in the current code is:
map.setCenter(new GLatLng(37.4419, -122.1419), 13);

This line calls setCenter on the map object, and passes in a GLatLng for the center, and a number for the zoom level. Change the two parameters of GLatLng to the latitude/longitude you found, and if you'd like, change the zoom parameter. Zoom level 0 is the lowest zoom level (showing all of the world), and increasing numbers zoom in closer.

Die 13 (18 aus dem Beispiel von oben) in die 15 ändern

Offline Nicky

  • Administrator
  • 4images Guru
  • *****
  • Posts: 3.195
    • View Profile
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #10 on: August 28, 2007, 10:32:56 PM »
mod moved.

Erik vielen Dank!
cheers
Nicky
Your first three "must do" before you ask a question ! (© by V@no)
- please read the Forum Rules ...
- please study the FAQ ...
- please try to Search for your answer ...

nicky.net 4 4images
Signature stolen from mawenzi

Offline ManfredK

  • Pre-Newbie
  • Posts: 4
    • View Profile
    • Homepage
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #11 on: November 07, 2007, 01:50:29 PM »
Hallo Erik,
Wirklich gute Arbeit. Nur beim Längengrad ist Ost und West verwechselt.
LG ;)
Manfred

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #12 on: November 07, 2007, 02:15:41 PM »
Hallo Erik,
Wirklich gute Arbeit. Nur beim Längengrad ist Ost und West verwechselt.

Hi,

Du hast recht - so ein Shit, ist mir bisher nicht aufgefallen. Der Fehler ist sogar auf dem Screenshot zu sehen. Keiner hat es bemerkt  :lol: - Danke für den Hinweis.

Habe im ersten Beitrag den Fehler berichtigt. Es war ein kleiner Fehler in der Abfrage des Längengrades. Dort war die Abfrage auf "O" für Ost gesetzt, die aber Englisch auf "E" für "East" lauten muß. Die Abgehangene functions.php ist ebenfalls geändert.

Grüße

Erik

PS: Habe meine erweiterte Functions.php mal angehangen. Kleine kosmetische Verbesserungen.
« Last Edit: November 07, 2007, 04:01:40 PM by Erik »

Offline osnapicture

  • Full Member
  • ***
  • Posts: 152
    • View Profile
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #13 on: December 13, 2007, 07:51:21 PM »
irgendwie bin ich zu blöd den mod einzubauen. sobald ich die beiden codeblöcke in meine functions.php einbaue, wird mir nur noch eine komplett weiße seite angezeigt. woran könnte das liegen?

Offline Erik

  • Jr. Member
  • **
  • Posts: 83
    • View Profile
    • http://www.koelschwasser.de
Re: [MOD] GPS Exif Informationen auslesen & in Google Map anzeigen
« Reply #14 on: December 14, 2007, 09:12:04 AM »
irgendwie bin ich zu blöd den mod einzubauen. sobald ich die beiden codeblöcke in meine functions.php einbaue, wird mir nur noch eine komplett weiße seite angezeigt. woran könnte das liegen?

Morgen,

denke, daß Du dann ein " oder dergleichen vergessen hast.
Tausche doch testweise einfach mal die gesammte function.php aus, die Du fertig hier downloaden kannst.
Die ist getestet und bei mir im Einsatz.

Grüße

Erik