703{
706 double start_measure = PG_GETARG_FLOAT8(1);
707 double end_measure = PG_GETARG_FLOAT8(2);
712
713 elog(WARNING,"ST_Locate_Between_Measures and ST_Locate_Along_Measure were deprecated in 2.2.0. Please use ST_LocateAlong and ST_LocateBetween");
714
715 if ( end_measure < start_measure )
716 {
717 lwpgerror("locate_between_m: 2nd arg must be bigger then 1st arg");
718 PG_RETURN_NULL();
719 }
720
721
722
723
724 if ( ! hasm )
725 {
726 lwpgerror("Geometry argument does not have an 'M' ordinate");
727 PG_RETURN_NULL();
728 }
729
730
731
732
733
735
737 {
738 lwpgerror("Areal or Collection types are not supported");
739 PG_RETURN_NULL();
740 }
741
743
745 start_measure, end_measure);
746
748
749 if ( lwout == NULL )
750 {
753 }
754
757
758 PG_RETURN_POINTER(gout);
759}
int32_t gserialized_get_srid(const GSERIALIZED *g)
Extract the SRID from the serialized form (it is packed into three bytes so this is a handy function)...
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
int gserialized_has_m(const GSERIALIZED *g)
Check if a GSERIALIZED has an M ordinate.
int gserialized_has_z(const GSERIALIZED *g)
Check if a GSERIALIZED has a Z ordinate.
uint32_t gserialized_get_type(const GSERIALIZED *g)
Extract the geometry type from the serialized form (it hides in the anonymous data area,...
void lwgeom_free(LWGEOM *geom)
LWCOLLECTION * lwcollection_construct_empty(uint8_t type, int32_t srid, char hasz, char hasm)
static LWGEOM * lwgeom_locate_between_m(LWGEOM *lwin, double m0, double m1)
GSERIALIZED * geometry_serialize(LWGEOM *lwgeom)