ST_ASGML
📄字数 1.8K
👁️阅读量 加载中...
功能描述
将几何图形作为地理标记语言 (GML) 元素返回。
语法格式
sql
CLOB ST_ASGML(GEOMETRY geom, INTEGER maxdecimaldigits=15, INTEGER options=0);
CLOB ST_ASGML(GEOGRAPHY geog, INTEGER maxdecimaldigits=15, INTEGER options=0, VARCHAR nprefix=NULL, VARCHAR id=NULL);
CLOB ST_ASGML(INTEGER version, geometry geom, INTEGER maxdecimaldigits=15, INTEGER options=0, VARCHAR nprefix=NULL, VARCHAR id=NULL);
CLOB ST_ASGML(INTEGER version, geography geog, INTEGER maxdecimaldigits=15, INTEGER options=0, VARCHAR nprefix=NULL, VARCHAR id=NULL);参数说明
- geom:目标 GEOMETRY 对象。
- geog:目标 GEOGRAPHY 对象。
- version:版本。如果指定,可以是 2 或 3。如果未指定版本参数,则默认值为 2。
- maxdecimaldigits:精度,用于减少输出中使用的最大小数位数。可选,默认 15。
- options:位字段,用于在 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 输出。 因此,如果您设置它,它将交换坐标,因此顺序是 lat lon 而不是数据库 lon lat。
- 32:输出几何体的边框(最小外接矩形)。
- nprefix:自定义命名空间前缀或无前缀(如果为空)。默认为 NULL。
- id:默认为 NULL。仅针对GML 3版本。
函数返回类型
CLOB 类型
使用说明
- GML 2指2.1.2版本,GML 3指3.1.1版本。
- 使用 maxdecimaldigits 参数可能会导致输出几何图形无效。 为了避免这种情况,首先使用 ST_ReducePrecision 和合适的网格大小。
- 该方法实现了SQL/MM规范。 SQL-MM IEC 13249-3: 17.2
- 该函数支持 3d 并且不会丢失 z-index。
- 该函数支持多面体曲面。
- 此函数支持三角形和不规则三角网面 (TIN)。
- 该函数在 GML 3版本之上,支持多面体曲面和 不规则三角网面(TIN)。
示例
版本 2:
sql
SQL> SELECT ST_ASGML(ST_GEOMFROMTEXT('POLYGON((0 0,0 1,1 1,1 0,0 0))',4326));
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <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> |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
(1 row)版本 3:
sql
-- Flip coordinates and output extended EPSG (16 | 1)
SQL> SELECT ST_ASGML(3, ST_GEOMFROMTEXT('POINT(5.234234233242 6.34534534534)',4326), 5, 17);
+-----------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+-----------------------------------------------------------------------------------------------------------------+
| <gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos srsDimension="2">6.34535 5.23423</gml:pos></gml:Point> |
+-----------------------------------------------------------------------------------------------------------------+
(1 row)
Use time:1 ms.sql
-- Output the envelope (32)
SQL> SELECT ST_ASGML(3, ST_GEOMFROMTEXT('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 32);
+--------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
| <gml:Envelope srsName="EPSG:4326" srsDimension="2"><gml:lowerCorner>1 2</gml:lowerCorner><gml:upperCorner>10 20</gml:upperCorner></gml:Envelope> |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
(1 row)sql
-- Output the envelope (32) , reverse (lat lon instead of lon lat) (16), long srs (1)= 32 | 16 | 1 = 49
SQL> SELECT ST_ASGML(3, ST_GEOMFROMTEXT('LINESTRING(1 2, 3 4, 10 20)',4326), 5, 49);
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326" srsDimension="2"><gml:lowerCorner>2 1</gml:lowerCorner><gml:upperCorner>20 10</gml:upperCorner></gml:Envelope> |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
(1 row)sql
--- e.g. Polyhedral
SQL> 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)) )'));
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <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> |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
(1 row)