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 <[EMAIL PROTECTED]>, Dec 18, 2000.
 *
 * Calculates the distance between 2 lat/lon pairs.  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.
[EMAIL PROTECTED]                    708-1641 Lonsdale Avenue
V: (604) 988-6999                       North Vancouver, BC, V7M 2J5

Reply via email to