Thema: Delphi UDF macht mist.

Einzelnen Beitrag anzeigen

mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#1

UDF macht mist.

  Alt 18. Mai 2006, 00:36
Datenbank: ib6 • Version: 6 • Zugriff über: sql
Guten Abend, ich habe heute meine erste udf geschrieben und muss sagen das geht ja alles recht einfach.
Leider funktioniert es nicht so wie es soll.
Meine funktion soll Die Distanz zwischen 2 Punkten berechnen (GPS-Koordinaten)
Hier die FKT in Delphi:
Delphi-Quellcode:
library DIST;

uses
  Math, SysUtils;

{$APPTYPE CONSOLE}


function GPSDIST(var lat1:Double; long1:Double; lat2:Double; long2:Double):Double; cdecl; export;
var x,y,z, phi1, phi2, eta1, eta2, entf,R:Double;
begin
R:=6371; //Radius der erde (als kugel)
phi1:=lat1*Pi/180;
eta1:=long1*Pi/180;

phi2:=lat2*Pi/180;
eta2:=long2*Pi/180;

x:=cos(eta1)*sin(phi1)-cos(eta2)*sin(phi2); //Die Differenzen bilden
y:=sin(phi1)*sin(eta1)-sin(phi2)*sin(eta2);
z:=cos(phi1)-cos(phi2);
entf:=R*sqrt(power(x,2)+power(y,2)+power(z,2)); //entfernung als norm berechnen
result:=entf;
end;


exports
  GPSDIST;
begin
end.
Jetzt habe ich z.b. eine tabelle mit unterschiedlichen orten und ich will gleichzeitig angezeigt bekommen, welche entfernung jeder von denen zu einem bestimmten punkt hat. das mache ich so:
SQL-Code:
SELECT GPSDIST(13.7705057, 51.0223236790861, PLZ.LAT, PLZ.LANG ) AS DIST,
    PLZ.LAT, PLZ.LANG
FROM PLZ
So. Alles schön und gut, aber komischerweise ist die Entfernung von jedem ort zum punkt immer gleich. (geschweige von GANZ FALSCH )
(so siehts aus: http://pilaf.ath.cx/pub/shared_pics/DIST.jpg )

nun. da sitze ich ratlos.

Die funktion habe ich separat (also in einem extra gui-fomular) schon getestet. da gabs keine größeren Abweichungen. (ausser dass ich die Erde als kugel statt Ellipse modelliert hab)

mfg
Muh macht die kUh
  Mit Zitat antworten Zitat