Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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 类型

使用说明

  1. GML 2指2.1.2版本,GML 3指3.1.1版本。
  2. 使用 maxdecimaldigits 参数可能会导致输出几何图形无效。 为了避免这种情况,首先使用 ST_ReducePrecision 和合适的网格大小。
  3. 该方法实现了SQL/MM规范。 SQL-MM IEC 13249-3: 17.2
  4. 该函数支持 3d 并且不会丢失 z-index。
  5. 该函数支持多面体曲面。
  6. 此函数支持三角形和不规则三角网面 (TIN)。
  7. 该函数在 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)