Hi,
I hope my question is appropriate for this list. I'm trying to create
a function that calculates the distance between a pair of
latitude/longitude points. This is what I have:
/* latlon_distance.pgsql* by Jamu Kakar <jkakar@expressus.com>, Dec 18, 2000.** Calculates the distance between 2
lat/lonpairs. Syntax:* distance (lat1, lon1, lat2, lon2) where parameters are in decimal degrees.*/
CREATE FUNCTION distance (float8, float8, float8, float8) RETURNS float8 AS ' DECLARE radius constant float8 := 6378;
distance float8; lat1 ALIAS FOR $1; lon1 ALIAS FOR $2; lat2 ALIAS FOR $3; lon2 ALIAS FOR $4; BEGIN distance
:=radius * acos ((sin (radians (lat1)) * sin (radians (lat2))) + (cos (radians (lat1)) *
cos(radians (lat2)) * cos (radians (lon1) - radians (lon2)))); RETURN ''distance'';
END;
' LANGUAGE 'plpgsql';
When I try a:
select distance(49.0,-122.0,50.0,-123.0) as distance;
I get:
ERROR: Bad float8 input format 'distance'
I've tried a variety of ways of specifying the values and I've hunted
through the mailing lists but haven't turned up anything useful. Any
help would be appreciated.
Thanks,
Jamu.
--
Jamu Kakar (Developer) Expressus Design Studio, Inc.
jkakar@expressus.com 708-1641 Lonsdale Avenue
V: (604) 988-6999 North Vancouver, BC, V7M 2J5