410{
411#ifndef HAVE_LIBJSON
412 *srs = NULL;
413 lwerror(
"You need JSON-C for lwgeom_from_geojson");
414 return NULL;
415#else
416
417
418 json_tokener *jstok = json_tokener_new();
419 json_object *poObj = json_tokener_parse_ex(jstok, geojson, -1);
420 if (jstok->err != json_tokener_success)
421 {
422 char err[256];
424 json_tokener_free(jstok);
425 json_object_put(poObj);
427 return NULL;
428 }
429 json_tokener_free(jstok);
430
431 *srs = NULL;
433 if (poObjSrs != NULL)
434 {
436 if (poObjSrsType != NULL)
437 {
439 if (poObjSrsProps)
440 {
442 if (poNameURL)
443 {
444 const char *pszName = json_object_get_string(poNameURL);
445 if (pszName)
446 {
447 *srs =
lwalloc(strlen(pszName) + 1);
448 strcpy(*srs, pszName);
449 }
450 }
451 }
452 }
453 }
454
457 json_object_put(poObj);
458 if (!lwgeom)
459 return NULL;
460
461 if (!hasz)
462 {
465 lwgeom = tmp;
466 }
468 return lwgeom;
469#endif
470}
void lwgeom_free(LWGEOM *geom)
LWGEOM * lwgeom_force_2d(const LWGEOM *geom)
Strip out the Z/M components of an LWGEOM.
void * lwalloc(size_t size)
void lwgeom_add_bbox(LWGEOM *lwgeom)
Compute a bbox if not already computed.
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
#define json_tokener_error_desc(x)
static LWGEOM * parse_geojson(json_object *geojson, int *hasz)
static json_object * findMemberByName(json_object *poObj, const char *pszName)