ST_AsGML
Prev | 8.9.3. Other Formats | Next

## Name

ST_AsGML — Return the geometry as a GML version 2 or 3 element.

## Synopsis

`text ST_AsGML(`geometry geom, integer maxdecimaldigits=15, integer options=0`)`;

`text ST_AsGML(`geography geog, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null`)`;

`text ST_AsGML(`integer version, geometry geom, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null`)`;

`text ST_AsGML(`integer version, geography geog, integer maxdecimaldigits=15, integer options=0, text nprefix=null, text id=null`)`;

## Description

Return the geometry as a Geography Markup Language (GML) element. The version parameter, if specified, may be either 2 or 3. If no version parameter is specified then the default is assumed to be 2. The `maxdecimaldigits` argument may be used to reduce the maximum number of decimal places used in output (defaults to 15).

Using the `maxdecimaldigits` parameter can cause output geometry to become invalid. To avoid this use ST_ReducePrecision with a suitable gridsize first.

GML 2 refer to 2.1.2 version, GML 3 to 3.1.1 version

The 'options' argument is a bitfield. It could be used to define CRS output type in GML output, and to declare data as lat/lon:

- 0: GML Short CRS (e.g EPSG:4326), default value

- 1: GML Long CRS (e.g urn:ogc:def:crs:EPSG::4326)

- 2: For GML 3 only, remove srsDimension attribute from output.

- 4: For GML 3 only, use <LineString> rather than <Curve> tag for lines.

- 16: Declare that datas are lat/lon (e.g srid=4326). Default is to assume that data are planars. This option is useful for GML 3.1.1 output only, related to axis order. So if you set it, it will swap the coordinates so order is lat lon instead of database lon lat.

- 32: Output the box of the geometry (envelope).

The 'namespace prefix' argument may be used to specify a custom namespace prefix or no prefix (if empty). If null or omitted 'gml' prefix is used

Availability: 1.3.2

Availability: 1.5.0 geography support was introduced.

Enhanced: 2.0.0 prefix support was introduced. Option 4 for GML3 was introduced to allow using LineString instead of Curve tag for lines. GML3 Support for Polyhedral surfaces and TINS was introduced. Option 32 was introduced to output the box.

Changed: 2.0.0 use default named args

Enhanced: 2.1.0 id support was introduced, for GML 3.

Only version 3+ of ST_AsGML supports Polyhedral Surfaces and TINS.

This method implements the SQL/MM specification. SQL-MM IEC 13249-3: 17.2

This function supports 3d and will not drop the z-index.

This function supports Polyhedral surfaces.

This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).

## Examples: Version 2

    SELECT ST_AsGML(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
    		st_asgml
    		--------
    		<gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>0,0 0,1 1,1 1,0 0,0</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon>

## Examples: Version 3

    -- Flip coordinates and output extended EPSG (16 | 1)--
    SELECT ST_AsGML(3, ST_GeomFromText('POINT(5.234234233242 6.34534534534)',4326), 5, 17);
    			st_asgml
    			--------
    		<gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>6.34535 5.23423</gml:pos></gml:Point>

    -- Output the envelope (32) --
    SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 32);
    		st_asgml
    		--------
    	<gml:Envelope srsName="EPSG:4326">
    		<gml:lowerCorner>1 2</gml:lowerCorner>
    		<gml:upperCorner>10 20</gml:upperCorner>
    	</gml:Envelope>

    -- Output the envelope (32) , reverse (lat lon instead of lon lat) (16), long srs (1)= 32 | 16 | 1 = 49 --
    SELECT ST_AsGML(3, ST_GeomFromText('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 49);
    	st_asgml
    	--------
    <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
    	<gml:lowerCorner>2 1</gml:lowerCorner>
    	<gml:upperCorner>20 10</gml:upperCorner>
    </gml:Envelope>

    -- Polyhedral Example --
    SELECT ST_AsGML(3, ST_GeomFromEWKT('POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
    ((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
    ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
    ((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'));
    	st_asgml
    	--------
     <gml:PolyhedralSurface>
    <gml:polygonPatches>
       <gml:PolygonPatch>
    		<gml:exterior>
    			  <gml:LinearRing>
    				   <gml:posList srsDimension="3">0 0 0 0 0 1 0 1 1 0 1 0 0 0 0</gml:posList>
    			  </gml:LinearRing>
    		</gml:exterior>
       </gml:PolygonPatch>
       <gml:PolygonPatch>
    		<gml:exterior>
    			  <gml:LinearRing>
    				   <gml:posList srsDimension="3">0 0 0 0 1 0 1 1 0 1 0 0 0 0 0</gml:posList>
    			  </gml:LinearRing>
    		</gml:exterior>
       </gml:PolygonPatch>
       <gml:PolygonPatch>
    		<gml:exterior>
    			  <gml:LinearRing>
    				   <gml:posList srsDimension="3">0 0 0 1 0 0 1 0 1 0 0 1 0 0 0</gml:posList>
    			  </gml:LinearRing>
    		</gml:exterior>
       </gml:PolygonPatch>
       <gml:PolygonPatch>
    		<gml:exterior>
    			  <gml:LinearRing>
    				   <gml:posList srsDimension="3">1 1 0 1 1 1 1 0 1 1 0 0 1 1 0</gml:posList>
    			  </gml:LinearRing>
    		</gml:exterior>
       </gml:PolygonPatch>
       <gml:PolygonPatch>
    		<gml:exterior>
    			  <gml:LinearRing>
    				   <gml:posList srsDimension="3">0 1 0 0 1 1 1 1 1 1 1 0 0 1 0</gml:posList>
    			  </gml:LinearRing>
    		</gml:exterior>
       </gml:PolygonPatch>
       <gml:PolygonPatch>
    		<gml:exterior>
    			  <gml:LinearRing>
    				   <gml:posList srsDimension="3">0 0 1 1 0 1 1 1 1 0 1 1 0 0 1</gml:posList>
    			  </gml:LinearRing>
    		</gml:exterior>
       </gml:PolygonPatch>
    </gml:polygonPatches>
    </gml:PolyhedralSurface>

## See Also

ST_GeomFromGML

Prev | Up | Next
ST_AsGeoJSON | Home | ST_AsKML