214{
217 GEOSGeometry *g1;
218 GEOSGeometry *g2;
219 double densifyFrac;
221 int retcode;
222
223 geom1 = PG_GETARG_GSERIALIZED_P(0);
224 geom2 = PG_GETARG_GSERIALIZED_P(1);
225 densifyFrac = PG_GETARG_FLOAT8(2);
226
228 PG_RETURN_NULL();
229
231
233 if (!g1)
235
237 if (!g2)
238 {
239 GEOSGeom_destroy(g1);
241 }
242
243 if (densifyFrac <= 0.0)
244 {
245 retcode = GEOSFrechetDistance(g1, g2, &
result);
246 }
247 else
248 {
249 retcode = GEOSFrechetDistanceDensify(g1, g2, densifyFrac, &
result);
250 }
251
252 GEOSGeom_destroy(g1);
253 GEOSGeom_destroy(g2);
254
256
257 PG_FREE_IF_COPY(geom1, 0);
258 PG_FREE_IF_COPY(geom2, 1);
259
261}
char result[OUT_DOUBLE_BUFFER_SIZE]
int gserialized_is_empty(const GSERIALIZED *g)
Check if a GSERIALIZED is empty without deserializing first.
void lwgeom_geos_error(const char *fmt,...)
GEOSGeometry * POSTGIS2GEOS(const GSERIALIZED *pglwgeom)
#define HANDLE_GEOS_ERROR(label)