= Determine Cardinal Direction = See [http://en.wikipedia.org/wiki/Cardinal_direction Wikipedia] for a description for cardinal direction. {{{ -- Function: ST_Cardinal_Direction(azimuth float8) -- Returns N, NW, W, SW, S, SE, E, or NE from an azimuth direction -- By: Mike Toews -- -- Usage: -- postgis=# SELECT ST_Cardinal_Direction( -- postgis(# ST_Azimuth('POINT(3 5)', 'POINT(5 5)')); -- st_cardinal_direction -- ----------------------- -- E -- (1 row) -- -- DROP FUNCTION ST_Cardinal_Direction(float8); CREATE OR REPLACE FUNCTION ST_Cardinal_Direction(azimuth float8) RETURNS character varying AS $BODY$SELECT CASE WHEN $1 < 0.0 THEN 'less than 0' WHEN $1*180/pi() < 22.5 THEN 'N' WHEN $1*180/pi() < 67.5 THEN 'NE' WHEN $1*180/pi() < 112.5 THEN 'E' WHEN $1*180/pi() < 157.5 THEN 'SE' WHEN $1*180/pi() < 202.5 THEN 'S' WHEN $1*180/pi() < 247.5 THEN 'SW' WHEN $1*180/pi() < 292.5 THEN 'W' WHEN $1*180/pi() < 337.5 THEN 'NW' WHEN $1*180/pi() <= 360.0 THEN 'N' END;$BODY$ LANGUAGE sql IMMUTABLE COST 100; COMMENT ON FUNCTION ST_Cardinal_Direction(float8) IS 'input azimuth in radians; returns N, NW, W, SW, S, SE, E, or NE'; }}}