DecimalLon, DecimalLat haben einen Fehler.
Man muss bei W und S das Ergebnis negieren. So wie das jetzt ist wird nur der Anfang(Grad) negiert.
8°28''58.3"W ergibt jetzt -7,48286151885986. Das sollte aber -8,48286151885986 sein.
Delphi-Quellcode:
//if (Pos('°W', Longitude) > 0) or (Longitude[length(Longitude)] = 'W') then
// Longitude := '-' + Longitude;
....
// erst am Ende prüfen
if (Pos('°W', Longitude) > 0) or (Longitude[length(Longitude)] = 'W') then
Result := -Result;