Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi GP(S)-Höhendaten aus Internet ermitteln (https://www.delphipraxis.net/140665-gp-s-hoehendaten-aus-internet-ermitteln.html)

DelphiFan2008 23. Sep 2009 10:52


GP(S)-Höhendaten aus Internet ermitteln
 
Hallo,

ich benutze Delphi schon seit längerem, habe mich jedoch nicht mit dem Zugriff aufs Internet beschäftigt. Momentan schreibe ich ein Programm zur Auswertung von GPS-Daten. Häufig fehlen in GPS-Dateien (GPX) die Höhenangaben. Die Höhenangaben könne z.B. im Internet unter <GPSies> mit Option "Höhendaten ersetzen / hinzufügen" ermittelt werden.

Das ufert bei häufiger Anwendung in Klick-Orgien aus und schreit nach Automatisierung und geht nur für Dateien. Auf einer weiteren Homepage <Were's Cyberhome> habe ich das Perl Script gefunden, welches ebenfalls die gewünschten Daten von <GeoNames> ermittelt.

Meine Vorstellung ist eine Funktion ähnlich im Script - halt nur in Delphi - so daß bei Übergabe der Geo-Koordinaten die Höhendaten über das Internet ermittelt werden. Perl :

my $response = $ua->get('http://ws.geonames.org/srtm3?lat='.$point->{'lat'}.'&lng='.$point->{'lon'});

Hat jemand eine Idee?

Gruß DelphiFan2008

Anmerkung : Ich verwende TurboDelphi 2006

Klaus01 23. Sep 2009 11:03

Re: GP(S)-Höhendaten aus Internet ermitteln
 
my $response = $ua->get('http://ws.geonames.org/srtm3?lat='.$point->{'lat'}.'&lng='.$point->{'lon'});


Ich würde es so versuchen:
Delphi-Quellcode:
sResponse := idHttp.get('http://ws.geonames.org/srtm3?lat='+FloatToStr(lat)+'&lng='+floatToStr(lon));
Vorausgesetzt lat und lon sind FloatWerte.

idHttp ist die Instanz der Klasse TidHttp.
Grüße
Klaus

DelphiFan2008 23. Sep 2009 12:03

Re: GP(S)-Höhendaten aus Internet ermitteln
 
Hallo Klaus01,

danke für deine "super" schnelle Antwort - Code funktioniert nach erstem Test hervorragen. Werde noch etwas ausbauen. Test-Programm

Delphi-Quellcode:
function StrRepChar(Strg:String;ch1,ch2:Char):String;
var i : integer;
begin
  for i:=1 to Length(Strg) do
    if(Strg[i]=ch1) then
      Strg[i]:=ch2;
  result := Strg;
end;

function GetNumString( Strg:String ):Double;
var i : integer;
     s : String;
begin
  s := '';
  for i:=1 to Length(Strg) do
    if(Strg[i] in ['0'..'9']) then
      s := s + Strg[i];
  result := StrToFloatDef( s,0.0 );
end;


procedure TForm1.Button1Click(Sender: TObject);
var idHttp             : TidHttp;
     sResponse,slat,slon : String;
     lat,lon,alt        : Double;
begin
  idHttp := TidHttp.Create;

  // München Allianz-Arena, ganz grob
  lat := 48.12;
  lon := 11.37;

  slat := StrRepChar( FloatToStr( lat ),Decimalseparator,'.' );
  slon := StrRepChar( FloatToStr( lon ),Decimalseparator,'.' );

  sResponse := idHttp.get('http://ws.geonames.org/srtm3?lat='+slat+'&lng='+slon);

  alt := GetNumString( sResponse );

  Caption := Format('[lat=%f][lat=%f][alt=%f]',[lat,lon,alt] );

  idHttp.Free;
end;
Danke und Gruß DelphiFan2008


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz