PostGIS  2.5.0beta2dev-r@@SVN_REVISION@@

◆ ST_Split()

Datum ST_Split ( PG_FUNCTION_ARGS  )

Definition at line 3179 of file postgis/lwgeom_geos.c.

References error_if_srid_mismatch(), geometry_serialize(), lwgeom_free(), lwgeom_from_gserialized(), lwgeom_split(), PG_FUNCTION_INFO_V1(), LWGEOM::srid, and ST_SharedPaths().

Referenced by ST_Snap().

3180 {
3181  GSERIALIZED *in, *blade_in, *out;
3182  LWGEOM *lwgeom_in, *lwblade_in, *lwgeom_out;
3183 
3184  in = PG_GETARG_GSERIALIZED_P(0);
3185  lwgeom_in = lwgeom_from_gserialized(in);
3186 
3187  blade_in = PG_GETARG_GSERIALIZED_P(1);
3188  lwblade_in = lwgeom_from_gserialized(blade_in);
3189 
3190  error_if_srid_mismatch(lwgeom_in->srid, lwblade_in->srid);
3191 
3192  lwgeom_out = lwgeom_split(lwgeom_in, lwblade_in);
3193  lwgeom_free(lwgeom_in);
3194  lwgeom_free(lwblade_in);
3195 
3196  if ( ! lwgeom_out )
3197  {
3198  PG_FREE_IF_COPY(in, 0); /* possibly referenced by lwgeom_out */
3199  PG_FREE_IF_COPY(blade_in, 1);
3200  PG_RETURN_NULL();
3201  }
3202 
3203  out = geometry_serialize(lwgeom_out);
3204  lwgeom_free(lwgeom_out);
3205  PG_FREE_IF_COPY(in, 0); /* possibly referenced by lwgeom_out */
3206  PG_FREE_IF_COPY(blade_in, 1);
3207 
3208  PG_RETURN_POINTER(out);
3209 }
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
void lwgeom_free(LWGEOM *geom)
Definition: lwgeom.c:1144
void error_if_srid_mismatch(int srid1, int srid2)
Definition: lwutil.c:338
int32_t srid
Definition: liblwgeom.h:401
GSERIALIZED * geometry_serialize(LWGEOM *lwgeom)
LWGEOM * lwgeom_split(const LWGEOM *lwgeom_in, const LWGEOM *blade_in)
Here is the call graph for this function:
Here is the caller graph for this function: