Skip to content

Instantly share code, notes, and snippets.

@datapolitan
Created September 23, 2015 20:52
Show Gist options
  • Save datapolitan/ffdeb086b3c4531d9f4e to your computer and use it in GitHub Desktop.
Save datapolitan/ffdeb086b3c4531d9f4e 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