From: | Manuel Weindorf <weindorf(at)ipf(dot)uni-karlsruhe(dot)de> |
---|---|
To: | pgsql-interfaces(at)postgresql(dot)org |
Subject: | Problem with C functions ? |
Date: | 1999-11-12 09:47:55 |
Message-ID: | 382BE24B.C370A0ED@ipf.uni-karlsruhe.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
Hi there,
I compiled a C-funtion to compute the azimuth of a LSEG but the function
never
returns the correct value, but elog( ... ) report the correct value.
So there seems to be a problem returning doubles or floats ??
compile the folling function with
gcc -fPIC -O2 -shared -o lseg_azimuth.o -c lseg_azimuth.c
-I/opt/local/postgres/include -L/opt/local/postgres/lib
ld -G -Bdynamic -o libgeom.so lseg_azimuth.o
#include <math.h>
#include "postgres.h"
#include "utils/geo_decls.h"
double lseg_azimuth( LSEG* lseg );
float add_one( float arg );
double lseg_azimuth( LSEG* lseg )
{
double x1, y1;
double x2, y2;
double ori;
x1 = lseg->p[0].x;
y1 = lseg->p[0].y;
x2 = lseg->p[1].x;
y2 = lseg->p[1].y;
ori = atan2( (x2-x1), (y2-y1));
ori = (ori / M_PI) * 200.0;
if ( ori < 0.0 )
ori += 400.0;
elog( NOTICE, "ori = %8.3lf", ori );
return( ori );
}
then use:
create function lseg_azimuth(lseg) returns float8
as ' ... path to the shared lib you just created ...' language 'c';
create table xxx (geometry lseg);
insert into xxx (geometry) values
('[(4148.675,5414.255),(4151.405,5414.255)]');
select lseg_azimuth(geometry) from xxx;
will return:
NOTICE: ori = 100.000
lseg_azimuth
------------
4148.675
(1 row)
But that's obviously not what it should be ...
Maybe you have any suggestions ?
many thanks
Manuel
--
Manuel Weindorf (weindorf(at)ipf(dot)bau-verm(dot)uni-karlsruhe(dot)de)
Institut fuer Photogrammetrie und Fernerkundung, Universitaet Karlsruhe
Postfach 6980 D-76128 Karlsruhe Tel. +49721 6086010 Fax +49721 694568
http://www-ipf.bau-verm.uni-karlsruhe.de
From | Date | Subject | |
---|---|---|---|
Next Message | Rolf Lüttecke | 1999-11-12 10:06:14 | Re: [INTERFACES] RE: THE Postgres WEB SITE |
Previous Message | Erwin van der Valk | 1999-11-12 09:38:42 | Adding records via Ole Db |