PostGIS  2.2.7dev-r@@SVN_REVISION@@
static LWGEOM * parse_geojson ( json_object *  geojson,
int *  hasz,
int  root_srid 
)
static

Definition at line 464 of file lwin_geojson.c.

References findMemberByName(), geojson_lwerror(), lwerror(), parse_geojson_geometrycollection(), parse_geojson_linestring(), parse_geojson_multilinestring(), parse_geojson_multipoint(), parse_geojson_multipolygon(), parse_geojson_point(), and parse_geojson_polygon().

Referenced by lwgeom_from_geojson(), and parse_geojson_geometrycollection().

465 {
466  json_object* type = NULL;
467  const char* name;
468 
469  if( NULL == geojson )
470  {
471  geojson_lwerror("invalid GeoJSON representation", 2);
472  return NULL;
473  }
474 
475  type = findMemberByName( geojson, "type" );
476  if( NULL == type )
477  {
478  geojson_lwerror("unknown GeoJSON type", 3);
479  return NULL;
480  }
481 
482  name = json_object_get_string( type );
483 
484  if( strcasecmp( name, "Point" )==0 )
485  return parse_geojson_point(geojson, hasz, root_srid);
486 
487  if( strcasecmp( name, "LineString" )==0 )
488  return parse_geojson_linestring(geojson, hasz, root_srid);
489 
490  if( strcasecmp( name, "Polygon" )==0 )
491  return parse_geojson_polygon(geojson, hasz, root_srid);
492 
493  if( strcasecmp( name, "MultiPoint" )==0 )
494  return parse_geojson_multipoint(geojson, hasz, root_srid);
495 
496  if( strcasecmp( name, "MultiLineString" )==0 )
497  return parse_geojson_multilinestring(geojson, hasz, root_srid);
498 
499  if( strcasecmp( name, "MultiPolygon" )==0 )
500  return parse_geojson_multipolygon(geojson, hasz, root_srid);
501 
502  if( strcasecmp( name, "GeometryCollection" )==0 )
503  return parse_geojson_geometrycollection(geojson, hasz, root_srid);
504 
505  lwerror("invalid GeoJson representation");
506  return NULL; /* Never reach */
507 }
static LWGEOM * parse_geojson_multipolygon(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:363
static void geojson_lwerror(char *msg, int error_code)
Definition: lwin_geojson.c:35
static LWGEOM * parse_geojson_polygon(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:206
static LWGEOM * parse_geojson_multilinestring(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:311
static LWGEOM * parse_geojson_linestring(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:170
static LWGEOM * parse_geojson_point(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:146
static LWGEOM * parse_geojson_geometrycollection(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:426
static json_object * findMemberByName(json_object *poObj, const char *pszName)
Definition: lwin_geojson.c:45
static LWGEOM * parse_geojson_multipoint(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:268
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:74

Here is the call graph for this function:

Here is the caller graph for this function: