\\ Die in den Exif-Daten eines Bildes hinterlegten geografischen Koordinaten können ausgelesen werden mit:\\ Laengengrad = FF_GetExifTag("Longitude") Breitengrad = FF_GetExifTag("Latitude")
Die Geografischen Koordinaten (wie FixFoto sie aus den Exif-Daten ausliest) können in Dezimalkoordinaten (wie z. B. Google Maps sie erwartet) umgerechnet werden.
VBS
'******************************************** '* grad2decimal wandelt ° ' " in dezimal '******************************************** function grad2decimal(ByVal p_Str) dim l_Richtung dim l_Pos dim l_Wert dim Gebietsschema if p_Str<>"" then Gebietsschema = GetLocale ' Gebietsschema des Systems ermitteln if Gebietsschema <> 2055 and Gebietsschema <> 5127 Then ' nicht Schweiz oder Lichtenstein, weil dort auch der Punkt gilt p_Str=replace(p_Str,".",",",1) ' Punkt durch Komma ersetzen End If l_Richtung=left(p_Str,1) p_Str=ltrim(right(p_Str,len(p_Str)-1)) l_Pos=instr(p_Str,"°") l_Wert=1.0*(left(p_Str,l_Pos-1)) p_Str=ltrim(right(p_Str,len(p_Str)-l_Pos)) l_Pos=instr(p_Str,"'") l_Wert=l_Wert + (left(p_Str,l_Pos-1))/60 p_Str=ltrim(right(p_Str,len(p_Str)-l_Pos)) l_Pos=instr(p_Str,"""") l_Wert=l_Wert + (left(p_Str,l_Pos-1))/3600 Select Case l_Richtung Case "s", "S", "w", "W" grad2decimal="-" & replace(FormatNumber(l_Wert,6),",",".",1) case Else grad2decimal=replace(FormatNumber(l_Wert,6),",",".",1) End Select else grad2decimal="" end if end function \\ __JScript__\\ function grad2decimal(tlat) { var dec = parseFloat(tlat.substr(1)); dec += parseFloat(tlat.substr(tlat.indexOf("°")+1)) / 60; dec += parseFloat(tlat.substr(tlat.indexOf("'")+1)) / 3600; if(tlat.charAt(0).toUpperCase() == "S") dec = -dec; if(tlat.charAt(0).toUpperCase() == "W") dec = -dec; return dec; } function decimal2grad(lat,c1,c2) { var d,m,s,lats; if (lat<0) { c1=c2; lat=Math.abs(lat); } d=Math.floor(lat); m=Math.floor((lat-d) *60); s=Math.floor(((((lat-d) *60)-m)*60)*100)/100 return c1 +d+"°"+m+"\'"+s+"\""; } // Testroutine // Aus Goggle Earth entnommen Lat_grad = "N52\°54\'29.29\"" Lon_grad = "E10\°35\'58.52\"" // hieraus Decimaldarstellung ausrechnen Lat2_dec = grad2decimal(Lat_grad); Lon2_dec = grad2decimal(Lon_grad); // und wieder zu Grad zurück Lat2_grad = decimal2grad(Lat2_dec,"N","S"); Lon2_grad = decimal2grad(Lon2_dec,"E","W"); // Anzeigen ff_MessageBox("Grad\t\t= " + Lat_grad +" " + Lon_grad + "\r\n"+ "=>Decimal\t= " + Lat2_dec +" " + Lon2_dec + "\r\n"+ "=>Grad\t\t= " + Lat2_grad +" " + Lon2_grad,1);
Konvertierung von Dezimalkoordinaten in Geografische Koordinaten:
VBS
'************************************************** '* decimal2grad wandelt dezimal in ° ' " um '* erwartet die Dezimalkoordinate und '* True für Breitengrad bzw. False für Längengrad '************************************************** Function decimal2grad (ByVal dezkoord, breite) Dim Richtung Dim Grad, Minuten, Sekunden if breite = true Then ' Breiten 'westliche Breite und südliche Länge haben negativ Dezimalkoordinaten if InStr(dezkoord,"-") > 0 Then Richtung = "S" Else Richtung = "N" End If Else ' Länge if InStr(dezkoord,"-") > 0 Then Richtung = "W" Else Richtung = "E" End If End If dezkoord = Replace(dezkoord,".",",") ' wegen Zahlenformat Punkt durch Komma ersetzen Grad = Abs(Fix(dezkoord)) ' pos. Ganzzahl ermitteln Minuten = (Abs(dezkoord)-Grad)*60 Sekunden = (Minuten - Fix(Minuten)) * 60 Minuten = Fix(Minuten) decimal2grad = Richtung & " " & FormatNumber(Grad,2) & "° " & FormatNumber(Minuten,2) & "' " & FormatNumber(Round(Sekunden,2),2) & Chr(34) decimal2grad = Replace(decimal2grad,",",".") End Function
Syntax: http://www.joerg-buchwitz.de/temp/googlemapssyntax.htm
z.B. Flugfeld Berlin Tempelhof (Breite: N 52.00° 28.00' 40.75" = 52.477986; Länge: E 13.00° 23.00' 53.60" = 13.398222), Aufruf des Browsers als externes Programm
VBS
BreiteGeo = "52.477986" LaengeGeo = "13.398222" URL = "http://maps.google.de/?q=" & BreiteGeo & "," & LaengeGeo Dim oWSHShell Set oWSHShell = CreateObject("WScript.Shell") oWSHShell.Run URL
z.B. Flugfeld Berlin Tempelhof (Breite: N 52.00° 28.00' 40.75" = 52.477986; Länge: E 13.00° 23.00' 53.60" = 13.398222; Hybridkarte, Zoomfaktor 14, mit blauer Markierung A)
http://maps.google.com/maps/api/staticmap?&size=640x640&maptype=hybrid&markers=color:blue|size:normal|label:A|52.477986,13.398222|52.477986,13.398222|&zoom=14&sensor=false
Der Aufruf der URL im Browser wird unter dem Stichwort externes Programm beschrieben.