1076 TupleDesc resultTupleDesc;
1077 HeapTuple resultTuple;
1079 Datum result_values[2];
1080 bool result_is_null[2];
1083 if (PG_ARGISNULL(0))
1086 geom = PG_GETARG_GSERIALIZED_P(0);
1098 if (!(mbc && mbc->
center))
1100 lwpgerror(
"Error calculating minimum bounding circle.");
1115 get_call_result_type(fcinfo, NULL, &resultTupleDesc);
1116 BlessTupleDesc(resultTupleDesc);
1118 result_values[0] = PointerGetDatum(center);
1119 result_is_null[0] =
false;
1120 result_values[1] = Float8GetDatum(radius);
1121 result_is_null[1] =
false;
1123 resultTuple = heap_form_tuple(resultTupleDesc, result_values, result_is_null);
1125 result = HeapTupleGetDatum(resultTuple);
1127 PG_RETURN_DATUM(result);
int32_t gserialized_get_srid(const GSERIALIZED *s)
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_is_empty(const GSERIALIZED *g)
Check if a GSERIALIZED is empty without deserializing first.
LWPOINT * lwpoint_make2d(int srid, double x, double y)
void lwgeom_free(LWGEOM *geom)
LWBOUNDINGCIRCLE * lwgeom_calculate_mbc(const LWGEOM *g)
void lwboundingcircle_destroy(LWBOUNDINGCIRCLE *c)
LWPOINT * lwpoint_construct_empty(int srid, char hasz, char hasm)
GSERIALIZED * geometry_serialize(LWGEOM *lwgeom)