PostGIS  2.1.10dev-r@@SVN_REVISION@@
static LWGEOM * parse_gml ( xmlNodePtr  xnode,
bool *  hasz,
int *  root_srid 
)
static

Parse GML.

Definition at line 1838 of file lwgeom_in_gml.c.

References gml_lwerror(), is_gml_namespace(), parse_gml_coll(), parse_gml_curve(), parse_gml_line(), parse_gml_linearring(), parse_gml_mcurve(), parse_gml_mline(), parse_gml_mpoint(), parse_gml_mpoly(), parse_gml_msurface(), parse_gml_point(), parse_gml_polygon(), parse_gml_psurface(), parse_gml_srs(), parse_gml_surface(), parse_gml_tin(), parse_gml_triangle(), struct_gmlSrs::srid, and SRID_UNKNOWN.

Referenced by lwgeom_from_gml(), parse_gml_coll(), parse_gml_mcurve(), parse_gml_mline(), parse_gml_mpoint(), parse_gml_mpoly(), and parse_gml_msurface().

1839 {
1840  xmlNodePtr xa = xnode;
1841  gmlSrs srs;
1842 
1843  while (xa != NULL && (xa->type != XML_ELEMENT_NODE
1844  || !is_gml_namespace(xa, false))) xa = xa->next;
1845 
1846  if (xa == NULL) gml_lwerror("invalid GML representation", 55);
1847 
1848  parse_gml_srs(xa, &srs);
1849  if (*root_srid == SRID_UNKNOWN && srs.srid != SRID_UNKNOWN)
1850  {
1851  *root_srid = srs.srid;
1852  }
1853 
1854  if (!strcmp((char *) xa->name, "Point"))
1855  return parse_gml_point(xa, hasz, root_srid);
1856 
1857  if (!strcmp((char *) xa->name, "LineString"))
1858  return parse_gml_line(xa, hasz, root_srid);
1859 
1860  if (!strcmp((char *) xa->name, "Curve"))
1861  return parse_gml_curve(xa, hasz, root_srid);
1862 
1863  if (!strcmp((char *) xa->name, "LinearRing"))
1864  return parse_gml_linearring(xa, hasz, root_srid);
1865 
1866  if (!strcmp((char *) xa->name, "Polygon"))
1867  return parse_gml_polygon(xa, hasz, root_srid);
1868 
1869  if (!strcmp((char *) xa->name, "Triangle"))
1870  return parse_gml_triangle(xa, hasz, root_srid);
1871 
1872  if (!strcmp((char *) xa->name, "Surface"))
1873  return parse_gml_surface(xa, hasz, root_srid);
1874 
1875  if (!strcmp((char *) xa->name, "MultiPoint"))
1876  return parse_gml_mpoint(xa, hasz, root_srid);
1877 
1878  if (!strcmp((char *) xa->name, "MultiLineString"))
1879  return parse_gml_mline(xa, hasz, root_srid);
1880 
1881  if (!strcmp((char *) xa->name, "MultiCurve"))
1882  return parse_gml_mcurve(xa, hasz, root_srid);
1883 
1884  if (!strcmp((char *) xa->name, "MultiPolygon"))
1885  return parse_gml_mpoly(xa, hasz, root_srid);
1886 
1887  if (!strcmp((char *) xa->name, "MultiSurface"))
1888  return parse_gml_msurface(xa, hasz, root_srid);
1889 
1890  if (!strcmp((char *) xa->name, "PolyhedralSurface"))
1891  return parse_gml_psurface(xa, hasz, root_srid);
1892 
1893  if ((!strcmp((char *) xa->name, "Tin")) ||
1894  !strcmp((char *) xa->name, "TriangulatedSurface" ))
1895  return parse_gml_tin(xa, hasz, root_srid);
1896 
1897  if (!strcmp((char *) xa->name, "MultiGeometry"))
1898  return parse_gml_coll(xa, hasz, root_srid);
1899 
1900  gml_lwerror("invalid GML representation", 56);
1901  return NULL; /* Never reach */
1902 }
static LWGEOM * parse_gml_triangle(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML Triangle (3.1.1)
static LWGEOM * parse_gml_mpoly(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML MultiPolygon (2.1.2, 3.1.1)
static LWGEOM * parse_gml_linearring(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML LinearRing (3.1.1)
static void parse_gml_srs(xmlNodePtr xnode, gmlSrs *srs)
Parse gml srsName attribute.
static LWGEOM * parse_gml_point(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML point (2.1.2, 3.1.1)
static LWGEOM * parse_gml_tin(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML Tin (and TriangulatedSurface) (3.1.1)
static LWGEOM * parse_gml_coll(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML MultiGeometry (2.1.2, 3.1.1)
static LWGEOM * parse_gml_mcurve(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML MultiCurve (3.1.1)
static LWGEOM * parse_gml_msurface(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML MultiSurface (3.1.1)
#define SRID_UNKNOWN
Unknown SRID value.
Definition: liblwgeom.h:154
static LWGEOM * parse_gml_mpoint(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse gml:MultiPoint (2.1.2, 3.1.1)
static LWGEOM * parse_gml_curve(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML Curve (3.1.1)
static bool is_gml_namespace(xmlNodePtr xnode, bool is_strict)
Return false if current element namespace is not a GML one Return true otherwise. ...
static void gml_lwerror(char *msg, int error_code)
Definition: lwgeom_in_gml.c:68
static LWGEOM * parse_gml_surface(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML Surface (3.1.1)
static LWGEOM * parse_gml_psurface(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML PolyhedralSurface (3.1.1) Nota: It's not part of SF-2.
static LWGEOM * parse_gml_mline(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse gml:MultiLineString (2.1.2, 3.1.1)
static LWGEOM * parse_gml_polygon(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML Polygon (2.1.2, 3.1.1)
static LWGEOM * parse_gml_line(xmlNodePtr xnode, bool *hasz, int *root_srid)
Parse GML lineString (2.1.2, 3.1.1)

Here is the call graph for this function:

Here is the caller graph for this function: