412{
413#ifndef HAVE_LIBJSON
414 *srs = NULL;
415 lwerror(
"You need JSON-C for lwgeom_from_geojson");
416 return NULL;
417#else
418
419
420 json_tokener *jstok = json_tokener_new();
421 json_object *poObj = json_tokener_parse_ex(jstok, geojson, -1);
422 if (jstok->err != json_tokener_success)
423 {
424 char err[256];
426 json_tokener_free(jstok);
427 json_object_put(poObj);
429 return NULL;
430 }
431 json_tokener_free(jstok);
432
433 *srs = NULL;
435 if (poObjSrs != NULL)
436 {
438 if (poObjSrsType != NULL)
439 {
441 if (poObjSrsProps)
442 {
444 if (poNameURL)
445 {
446 const char *pszName = json_object_get_string(poNameURL);
447 if (pszName)
448 {
449 *srs =
lwalloc(strlen(pszName) + 1);
450 strcpy(*srs, pszName);
451 }
452 }
453 }
454 }
455 }
456
459 json_object_put(poObj);
460 if (!lwgeom)
461 return NULL;
462
463 if (!hasz)
464 {
467 lwgeom = tmp;
468 }
470 return lwgeom;
471#endif
472}
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 void lwerror(const char *fmt,...) __attribute__((format(printf
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)