Geografische Koordinaten zu Dezimalkoordinaten

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
#1
Hallo,

hat/kennt vielleicht jemand einen VBS-Skript-Schnipsel, der Geografische Koordinaten (die FF aus den Exif-Daten ausliest) in Dezimalkoordinaten (wie Google Maps sie erwartet) umrechnet?
Im Forum hab ich nur was in JS gefunden, komme damit aber nicht klar.
 

opi-hs

Mitglied
Dabei seit
09.02.05
Beiträge
558
Standort
Köln
#5
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Andreas (praetor)

Was hälst Du hiervon:


'********************************************
'* grad2decimal wandelt ° ' " in dezimal
'********************************************
function grad2decimal(byRef p_Str)

dim l_Richtung
dim l_Pos
dim l_Wert

if p_Str<>"" then
p_Str=replace(p_Str,".",",",1)
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
grad2decimal=l_Richtung & replace(FormatNumber(l_Wert,6),",",".",1)
else
grad2decimal=""
end if

end function



Der Rückgabewert der Funktion ist ein String, der den Dezimalwert des übergebenen Winkel-Stirng in ° ' " kiefert.

Gruß
Heinrich
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
#6
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Heinrich,
eine ganze Menge! Das funktioniert großartig. Danke!:cool:

Die Funktion macht z.B. aus
Code:
N 50.00° 16.00' 59.67"
dies
Code:
N50.283242
Google Maps erwartet eigentlich den reinen Zahlenwert ohne dem vorangestellten Buchstaben für die Himmelsrichtung (also 50.283242). Bis jetzt scheint es aber so, dass die Werte trotzdem angenommen werden.
Ob die Funktion auch für die Südhalbkugel funktioniert, will ich noch testen.
 

Stups

Mitglied
Dabei seit
08.12.06
Beiträge
2.075
Standort
Moers
Trophäen
!!!!!!**** ...?
#7
AW: Geografische Koordinaten zu Dezimalkoordinaten

Ein Ahnungsloser fragt: Wie wende ich das an?
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#9
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Heinrich,

ich hab es noch etwas eingedampft. Vielleicht kann es einer noch kompakter ...

function grd2dec(arg)
b=replace(trim(mid(arg,2)),".",","):b=replace(b,"°"," "):b=replace(b,"'"," "):b=replace(b,""""," "):arr=split(replace(b," "," ")," ")
grd2dec=left(trim(arg),1)&" "&arr(0)+(arr(1)/60+arr(2)/3600)
end function

Sowohl diese Kurzfassung als auch Deine Version sind rudimentär und funktionieren nur bei korrektem Funktionsargument.
Ohne eingebaute Eingangsprüfung sind beide Versionen nicht einsetzbar (nur mal so für Praetor)!

PS: 'BYREF' ist Default bei vbs-Funktionsparams.
PPS: Schon Fortschritte beim Sudoku-Generator?
 
Zuletzt bearbeitet:

opi-hs

Mitglied
Dabei seit
09.02.05
Beiträge
558
Standort
Köln
#10
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Jochen,
Super!
Aber wofür das makierte "replace"

... b=replace(trim(mid(arg,2)),".",","):b=replace(b,"°"," "):b=replace(b,"'"," "):b=replace(b,""""," "):arr=split(replace(b," "," ")," ") ...
Insofern geht es also noch etwas kürzer:

function grd2dec(arg)
b=replace(trim(mid(arg,2)),".",","):b=replace(b,"°"," "):b=replace(b,"'"," "):b=replace(b,""""," "):arr=split(b," ")
grd2dec=left(trim(arg),1)&" "&arr(0)+(arr(1)/60+arr(2)/3600)
end function


Vorschlag um das Ganze (zwar immer noch ohne komplette Vorprüfung) etwas sicherer zu machen, wäre das Eliminieren von Spaces im Argument, die sonst Runtime-Fehler produzieren:

"function grd2dec(arg)
b=replace(arg," ",""):replace(mid(b,2),".",","):b=replace(b,"°"," "):b=replace(b,"'"," "):b=replace(b,""""," "):arr=split(b," ")
grd2dec=left(trim(arg),1)&" "&arr(0)+(arr(1)/60+arr(2)/3600)
end function"

PS: 'BYREF' ist Default bei vbs-Funktionsparams.
Ich weiß; ich gebe es für mich einfach nur der Vollständigkeit halber im Quelltext (wie auch z.B. call beim Aufruf jedweder "Sub"-Routine) mit an.

PPS: Schon Fortschritte beim Sudoku-Generator?
Nein: habe ich zunächst ein wenig zugunsten des AlbumMakers zurückgestellt.

Gruß
Heinrich
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#11
AW: Geografische Koordinaten zu Dezimalkoordinaten

... b=replace(trim(mid(arg,2)),".",","):b=replace(b,"°"," "):b=replace(b,"'"," "):b=replace(b,""""," "):arr=split(replace(b,"UU","U")," ") ...

Die Forumssoftware unterschlägt doppelte Blanks. Habe Blanks durch "U" ersetzt. Bei den ersten Replaces entstehen doppelte Blanks, beim Split dann Leerfelder im Array. Vorsichtsmaßnahme, habe ich nicht getestet.
Es ist aber so, dass der letzte Replace zwar alle doppelten Blanks auf einmal entfernt, dreifache aber schon nicht mehr, weshalb die Aktion zwar gut gemeint ist, aber ungenügend. Man kommt nicht darum herum, als erstes das Eingangsargument zu prüfen und auf Norm zu trimmen. Gründlich durchgeführt, verdoppelt oder verdreifacht das den Code. Die Blanks gleich rauszuhauen ist eine gute Idee, aber es bleiben noch ungültige Zeichen, Zeichenreihenfolge, numerische Dimensionnen usw.
 
Zuletzt bearbeitet:

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
#12
AW: Geografische Koordinaten zu Dezimalkoordinaten

Höchst interessant, zu was für Diskussionen das hier führt. Da deutet sich ja fast eine neue Wettbewerbsdisziplin an.

BYREF' ist Default bei vbs-Funktionsparams.
Ziemlich tückisch, wie ich finde. Ich hatte die Funktion von Heinrich 2x mit demselben Ausgangsparameter aufgerufen und recht lange gebraucht, bis ich dahinter kam, warum der zweite Aufruf nur Müll erbrachte.
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
#13
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Heinrich & Jochen,

bei Nutzung der Umrechungsfunktion (ich hab die aus #5 verwendet) sind unerwartete Probleme aufgetreten.
Lässt sich die Funktion so umstricken, dass keine Buchstaben für die Himmelsrichtung enthalten sind?
Ich könnte die Buchstaben natürlich leicht abschnibbeln, bin mir aber nicht im Klaren, ob die Funktion dann noch für alle Hemisphären funktioniert.
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#14
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Heinrich & Jochen,

bei Nutzung der Umrechungsfunktion (ich hab die aus #5 verwendet) sind unerwartete Probleme aufgetreten.
Lässt sich die Funktion so umstricken, dass keine Buchstaben für die Himmelsrichtung enthalten sind?
Ich könnte die Buchstaben natürlich leicht abschnibbeln, bin mir aber nicht im Klaren, ob die Funktion dann noch für alle Hemisphären funktioniert.
Nord ist alles oberhalb, Süd unterhalb des Äquators. Ost ist "Rechts" vom Greenwicher Nullmeridian, West = "Links" davon.
Ersetze alle "S","s" durch "-"(Minus), Alle "W","w", ebenfalls durch "-". "N","n","E","e","O","o" ersatzlos entfernen. Dann frisst Google die Koordinaten. Alle anderen Programme sollten auch damit umgehen können.
Frohe Weihnachten.
 

Niels1938

Mitglied
Dabei seit
15.05.03
Beiträge
1.723
Standort
15 km nördlich von Kopenhagen, Dänemark
#15
AW: Geografische Koordinaten zu Dezimalkoordinaten

Hallo Jochen,

Ich habe deine Vorschläge in #9, #11 und #14 gelesen, aber nicht ganz zusammen verstanden.
Ein vollständiges Beispiel einschlieslich Aufruf wäre schön.

Grüsse,
 

praetor

Mitglied
Dabei seit
24.10.04
Beiträge
2.144
Standort
Berlin
Trophäen
{**!!!}**!!!!! !!!!! !!
#16
AW: Geografische Koordinaten zu Dezimalkoordinaten

Ersetze alle "S","s" durch "-"(Minus), Alle "W","w", ebenfalls durch "-". "N","n","E","e","O","o" ersatzlos entfernen.
Danke Jochen, funktioniert 1a. Hatte Deinen Antwort zunächst glatt übersehen.
 
Oben