PostGIS  2.4.9dev-r@@SVN_REVISION@@

◆ parse_geojson()

static LWGEOM * parse_geojson ( json_object *  geojson,
int *  hasz,
int  root_srid 
)
static

Definition at line 491 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(), parse_geojson_polygon(), and ovdump::type.

Referenced by geojson_lwerror(), lwgeom_from_geojson(), and parse_geojson_geometrycollection().

492 {
493  json_object* type = NULL;
494  const char* name;
495 
496  if( NULL == geojson )
497  {
498  geojson_lwerror("invalid GeoJSON representation", 2);
499  return NULL;
500  }
501 
502  type = findMemberByName( geojson, "type" );
503  if( NULL == type )
504  {
505  geojson_lwerror("unknown GeoJSON type", 3);
506  return NULL;
507  }
508 
509  name = json_object_get_string( type );
510 
511  if( strcasecmp( name, "Point" )==0 )
512  return parse_geojson_point(geojson, hasz, root_srid);
513 
514  if( strcasecmp( name, "LineString" )==0 )
515  return parse_geojson_linestring(geojson, hasz, root_srid);
516 
517  if( strcasecmp( name, "Polygon" )==0 )
518  return parse_geojson_polygon(geojson, hasz, root_srid);
519 
520  if( strcasecmp( name, "MultiPoint" )==0 )
521  return parse_geojson_multipoint(geojson, hasz, root_srid);
522 
523  if( strcasecmp( name, "MultiLineString" )==0 )
524  return parse_geojson_multilinestring(geojson, hasz, root_srid);
525 
526  if( strcasecmp( name, "MultiPolygon" )==0 )
527  return parse_geojson_multipolygon(geojson, hasz, root_srid);
528 
529  if( strcasecmp( name, "GeometryCollection" )==0 )
530  return parse_geojson_geometrycollection(geojson, hasz, root_srid);
531 
532  lwerror("invalid GeoJson representation");
533  return NULL; /* Never reach */
534 }
char * name
Definition: mvt.h:50
static void geojson_lwerror(char *msg, __attribute__((__unused__)) int error_code)
Definition: lwin_geojson.c:55
static LWGEOM * parse_geojson_multipolygon(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:390
static LWGEOM * parse_geojson_polygon(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:226
static LWGEOM * parse_geojson_multilinestring(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:338
static LWGEOM * parse_geojson_linestring(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:190
static LWGEOM * parse_geojson_point(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:166
static LWGEOM * parse_geojson_geometrycollection(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:453
static json_object * findMemberByName(json_object *poObj, const char *pszName)
Definition: lwin_geojson.c:65
type
Definition: ovdump.py:41
static LWGEOM * parse_geojson_multipoint(json_object *geojson, int *hasz, int root_srid)
Definition: lwin_geojson.c:295
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:190
Here is the call graph for this function:
Here is the caller graph for this function: