ST_AsGML — 以 GML 版本 2 或 3 元素的形式返回几何。
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)
;
以地理标记语言 (GML) 元素的形式返回几何。如果指定了版本参数,则可以是 2 或 3。如果未指定版本参数,则默认为 2。可以使用 maxdecimaldigits
参数来减少输出中使用的最大小数位数(默认为 15)。
使用 |
GML 2 指 2.1.2 版本,GML 3 指 3.1.1 版本
“选项”参数是一个位字段。它可用于定义 GML 输出中的 CRS 输出类型,并声明数据为经纬度
0:GML 短 CRS(例如 EPSG:4326),默认值
1:GML 长 CRS(例如 urn:ogc:def:crs:EPSG::4326)
2:仅适用于 GML 3,从输出中删除 srsDimension 属性。
4:仅适用于 GML 3,对线使用 <LineString> 标签,而不是 <Curve> 标签。
16:声明数据为经纬度(例如 srid=4326)。默认情况下,假设数据是平面数据。此选项仅对 GML 3.1.1 输出有用,与轴顺序相关。因此,如果你设置了此选项,它将交换坐标,以便顺序为纬度经度,而不是数据库经纬度。
32:输出几何的框(包络)。
“命名空间前缀”参数可用于指定自定义命名空间前缀或不使用前缀(如果为空)。如果为 null 或省略,则使用“gml”前缀
可用性:1.3.2
可用性:1.5.0 引入了地理支持。
增强:2.0.0 引入了前缀支持。引入了 GML3 的选项 4,以允许使用 LineString 而非 Curve 标记表示线。引入了 GML3 对多面体曲面和 TIN 的支持。引入了选项 32 以输出框。
更改:2.0.0 使用默认命名参数
增强:2.1.0 引入了 GML 3 的 id 支持。
只有 ST_AsGML 的版本 3+ 支持多面体曲面和 TIN。 |
此方法实现了 SQL/MM 规范。
SQL-MM IEC 13249-3: 17.2
此函数支持 3d,并且不会删除 z 索引。
此函数支持多面体曲面。
此函数支持三角形和三角不规则网络曲面 (TIN)。
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>
-- 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>