GEO-Koordinaten

  1. \\ Die in den Exif-Daten eines Bildes hinterlegten geografischen Koordinaten können ausgelesen werden mit:\\
  2. Laengengrad = FF_GetExifTag("Longitude")
  3. 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

  1. '********************************************
  2. '* grad2decimal wandelt ° ' " in dezimal
  3. '********************************************
  4. function grad2decimal(ByVal p_Str)
  5. dim l_Richtung
  6. dim l_Pos
  7. dim l_Wert
  8. dim Gebietsschema
  9.  
  10. if p_Str<>"" then
  11. Gebietsschema = GetLocale ' Gebietsschema des Systems ermitteln
  12. if Gebietsschema <> 2055 and Gebietsschema <> 5127 Then ' nicht Schweiz oder Lichtenstein, weil dort auch der Punkt gilt
  13. p_Str=replace(p_Str,".",",",1) ' Punkt durch Komma ersetzen
  14. End If
  15. l_Richtung=left(p_Str,1)
  16. p_Str=ltrim(right(p_Str,len(p_Str)-1))
  17. l_Pos=instr(p_Str,"°")
  18. l_Wert=1.0*(left(p_Str,l_Pos-1))
  19. p_Str=ltrim(right(p_Str,len(p_Str)-l_Pos))
  20. l_Pos=instr(p_Str,"'")
  21. l_Wert=l_Wert + (left(p_Str,l_Pos-1))/60
  22. p_Str=ltrim(right(p_Str,len(p_Str)-l_Pos))
  23. l_Pos=instr(p_Str,"""")
  24. l_Wert=l_Wert + (left(p_Str,l_Pos-1))/3600
  25. Select Case l_Richtung
  26. Case "s", "S", "w", "W"
  27. grad2decimal="-" & replace(FormatNumber(l_Wert,6),",",".",1)
  28. case Else
  29. grad2decimal=replace(FormatNumber(l_Wert,6),",",".",1)
  30. End Select
  31. else
  32. grad2decimal=""
  33. end if
  34.  
  35. end function
  36.  
  37. \\ __JScript__\\
  38. function grad2decimal(tlat)
  39. {
  40. var dec = parseFloat(tlat.substr(1));
  41. dec += parseFloat(tlat.substr(tlat.indexOf("°")+1)) / 60;
  42. dec += parseFloat(tlat.substr(tlat.indexOf("'")+1)) / 3600;
  43. if(tlat.charAt(0).toUpperCase() == "S") dec = -dec;
  44. if(tlat.charAt(0).toUpperCase() == "W") dec = -dec;
  45. return dec;
  46. }
  47.  
  48. function decimal2grad(lat,c1,c2)
  49. {
  50. var d,m,s,lats;
  51. if (lat<0)
  52. { c1=c2; lat=Math.abs(lat); }
  53. d=Math.floor(lat);
  54. m=Math.floor((lat-d) *60);
  55. s=Math.floor(((((lat-d) *60)-m)*60)*100)/100
  56. return c1 +d+"°"+m+"\'"+s+"\"";
  57. }
  58.  
  59. // Testroutine
  60. // Aus Goggle Earth entnommen
  61. Lat_grad = "N52\°54\'29.29\""
  62. Lon_grad = "E10\°35\'58.52\""
  63.  
  64. // hieraus Decimaldarstellung ausrechnen
  65. Lat2_dec = grad2decimal(Lat_grad);
  66. Lon2_dec = grad2decimal(Lon_grad);
  67.  
  68. // und wieder zu Grad zurück
  69. Lat2_grad = decimal2grad(Lat2_dec,"N","S");
  70. Lon2_grad = decimal2grad(Lon2_dec,"E","W");
  71.  
  72. // Anzeigen
  73. ff_MessageBox("Grad\t\t= " + Lat_grad +" " + Lon_grad + "\r\n"+
  74. "=>Decimal\t= " + Lat2_dec +" " + Lon2_dec + "\r\n"+
  75. "=>Grad\t\t= " + Lat2_grad +" " + Lon2_grad,1);


Konvertierung von Dezimalkoordinaten in Geografische Koordinaten:
VBS

  1. '**************************************************
  2. '* decimal2grad wandelt dezimal in ° ' " um
  3. '* erwartet die Dezimalkoordinate und
  4. '* True für Breitengrad bzw. False für Längengrad
  5. '**************************************************
  6. Function decimal2grad (ByVal dezkoord, breite)
  7. Dim Richtung
  8. Dim Grad, Minuten, Sekunden
  9. if breite = true Then ' Breiten
  10. 'westliche Breite und südliche Länge haben negativ Dezimalkoordinaten
  11. if InStr(dezkoord,"-") > 0 Then
  12. Richtung = "S"
  13. Else
  14. Richtung = "N"
  15. End If
  16. Else ' Länge
  17. if InStr(dezkoord,"-") > 0 Then
  18. Richtung = "W"
  19. Else
  20. Richtung = "E"
  21. End If
  22. End If
  23. dezkoord = Replace(dezkoord,".",",") ' wegen Zahlenformat Punkt durch Komma ersetzen
  24. Grad = Abs(Fix(dezkoord)) ' pos. Ganzzahl ermitteln
  25. Minuten = (Abs(dezkoord)-Grad)*60
  26. Sekunden = (Minuten - Fix(Minuten)) * 60
  27. Minuten = Fix(Minuten)
  28. decimal2grad = Richtung & " " & FormatNumber(Grad,2) & "° " & FormatNumber(Minuten,2) & "' " & FormatNumber(Round(Sekunden,2),2) & Chr(34)
  29. decimal2grad = Replace(decimal2grad,",",".")
  30. 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


VBS

  1. BreiteGeo = "52.477986"
  2. LaengeGeo = "13.398222"
  3. URL = "http://maps.google.de/?q=" & BreiteGeo & "," & LaengeGeo
  4.  
  5. Dim oWSHShell
  6. Set oWSHShell = CreateObject("WScript.Shell")
  7. oWSHShell.Run URL

Nutzung der Static Maps API

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 beschrieben.