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

Definition at line 462 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().

463 {
464  json_object* type = NULL;
465  const char* name;
466 
467  if( NULL == geojson )
468  {
469  geojson_lwerror("invalid GeoJSON representation", 2);
470  return NULL;
471  }
472 
473  type = findMemberByName( geojson, "type" );
474  if( NULL == type )
475  {
476  geojson_lwerror("unknown GeoJSON type", 3);
477  return NULL;
478  }
479 
480  name = json_object_get_string( type );
481 
482  if( strcasecmp( name, "Point" )==0 )
483  return parse_geojson_point(geojson, hasz, root_srid);
484 
485  if( strcasecmp( name, "LineString" )==0 )
486  return parse_geojson_linestring(geojson, hasz, root_srid);
487 
488  if( strcasecmp( name, "Polygon" )==0 )
489  return parse_geojson_polygon(geojson, hasz, root_srid);
490 
491  if( strcasecmp( name, "MultiPoint" )==0 )
492  return parse_geojson_multipoint(geojson, hasz, root_srid);
493 
494  if( strcasecmp( name, "MultiLineString" )==0 )
495  return parse_geojson_multilinestring(geojson, hasz, root_srid);
496 
497  if( strcasecmp( name, "MultiPolygon" )==0 )
498  return parse_geojson_multipolygon(geojson, hasz, root_srid);
499 
500  if( strcasecmp( name, "GeometryCollection" )==0 )
501  return parse_geojson_geometrycollection(geojson, hasz, root_srid);
502 
503  lwerror("invalid GeoJson representation");
504  return NULL; /* Never reach */
505 }
static LWGEOM * parse_geojson_multipolygon(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:361
static void geojson_lwerror(char *msg, int error_code)
Definition: lwin_geojson.c:36
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:67
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:310
static LWGEOM * parse_geojson_linestring(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:171
static LWGEOM * parse_geojson_point(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:147
static LWGEOM * parse_geojson_geometrycollection(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:424
static json_object * findMemberByName(json_object *poObj, const char *pszName)
Definition: lwin_geojson.c:46
static LWGEOM * parse_geojson_multipoint(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:268

Here is the call graph for this function:

Here is the caller graph for this function: