1)您的查询是正确的,但您的坐标是倒置的。WKT格式的正确坐标顺序是POINT(x y)
,POINT(longitude latitude)
此查询为您提供预期的结果:
SELECT ST_AsText(ST_Transform(ST_GeomFromText('POINT(-5.86424016952515 36.5277099609375)',4326),32630)) As check;
2)要从纬度/经度几何图形中获取 UTM 区域,您可以使用以下公式:
ST_X(input_geometry)+180)/6)+1
进行一些调整。
为此,我们使用此功能:
CREATE OR REPLACE FUNCTION get_utmzone(input_geom geometry)
RETURNS integer AS
$BODY$
DECLARE
zone int;
pref int;
BEGIN
IF GeometryType(input_geom) != 'POINT' THEN
RAISE EXCEPTION 'Input geom must be a point. Currently is: %', GeometryType(input_geom);
END IF;
IF ST_Y(input_geom) >0 THEN
pref:=32600;
ELSE
pref:=32700;
END IF;
zone = floor((ST_X(input_geom)+180)/6)+1;
RETURN zone+pref;
END;
$BODY$
LANGUAGE plpgsql IMMUTABLE;
将其与此查询一起使用:
SELECT get_utmzone(ST_GeomFromText('POINT( -5.86424016952515 36.5277099609375)',4326));
结果应该是32630