]> granicus.if.org Git - postgis/commitdiff
#2641, ST_SRID and ST_SetSRID for geography
authorPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 22 Jul 2015 14:54:03 +0000 (14:54 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 22 Jul 2015 14:54:03 +0000 (14:54 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@13827 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/geography.sql.in
postgis/lwgeom_ogc.c

index b8ac6807f0476ca34af5079dde722a1c33040cb9..be9f4b99870615e8bf9f5ab684d7886a35daade9 100644 (file)
@@ -801,7 +801,18 @@ CREATE OR REPLACE FUNCTION ST_GeoHash(geog geography, maxchars int4 DEFAULT 0)
        AS 'MODULE_PATHNAME', 'ST_GeoHash'
        LANGUAGE 'c' IMMUTABLE STRICT;
 
+-- Availability: 2.2.0
+CREATE OR REPLACE FUNCTION ST_SRID(geog geography)
+       RETURNS int4
+       AS 'MODULE_PATHNAME', 'LWGEOM_get_srid'
+       LANGUAGE 'c' IMMUTABLE STRICT;
        
+-- Availability: 2.2.0
+CREATE OR REPLACE FUNCTION ST_SetSRID(geog geography, srid int4)
+       RETURNS geography
+       AS 'MODULE_PATHNAME', 'LWGEOM_set_srid'
+       LANGUAGE 'c' IMMUTABLE STRICT;
+  
 -----------------------------------------------------------------------------
 
 
index a4d82cca3317180d2b5fe2eb8237fb1455f26d35..f4b1879dc9ff3b913ac2ec4ccfc7411b17aa8f92 100644 (file)
@@ -91,15 +91,10 @@ Datum LWGEOM_get_srid(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(LWGEOM_set_srid);
 Datum LWGEOM_set_srid(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *result;
-       GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *g = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
        int srid = PG_GETARG_INT32(1);
-       LWGEOM *lwgeom = lwgeom_from_gserialized(geom);
-       lwgeom_set_srid(lwgeom, srid);
-       result = geometry_serialize(lwgeom);
-       lwgeom_free(lwgeom);
-       PG_FREE_IF_COPY(geom, 0);
-       PG_RETURN_POINTER(result);
+       gserialized_set_srid(g, srid);
+       PG_RETURN_POINTER(g);
 }
 
 /* returns a string representation of this geometry's type */