====== GEO-Koordinaten ======
\\ 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
\\ \\
===== Beispiele für Google Maps-Aufrufe =====
=== dynamische Googe Maps ===
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|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
=== Nutzung der Static Maps API ===
[[https://developers.google.com/maps/documentation/maps-static/intro|Static Maps API]]
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|externes Programm]] beschrieben.