Skip to content

Instantly share code, notes, and snippets.

@richarddunks
Forked from datapolitan/utmzone.sql
Created March 7, 2023 03:19
Show Gist options
  • Save richarddunks/7740dc5761a6fd5ee1dbe92d01f08df7 to your computer and use it in GitHub Desktop.
Save richarddunks/7740dc5761a6fd5ee1dbe92d01f08df7 to your computer and use it in GitHub Desktop.
/* Function: utmzone(geometry)
DROP FUNCTION utmzone(geometry);
Usage: SELECT ST_Transform(the_geom, utmzone(ST_Centroid(the_geom))) FROM sometable; */
CREATE OR REPLACE FUNCTION utmzone(geometry)
RETURNS integer AS
$BODY$
DECLARE
geomgeog geometry;
zone int;
pref int;
BEGIN
geomgeog:= ST_Transform($1,4326);
IF (ST_Y(geomgeog))>0 THEN
pref:=32600;
ELSE
pref:=32700;
END IF;
zone:=floor((ST_X(geomgeog)+180)/6)+1;
RETURN zone+pref;
END;
$BODY$ LANGUAGE 'plpgsql' IMMUTABLE
COST 100;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment