Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_GEOMFROMGML

📄字数 1.1K
👁️阅读量 加载中...

功能描述

根据 OGC GML 制图表达生成 几何对象。

语法格式

sql

GEOMETRY ST_GEOMFROMGML(CLOB geomgml, INTEGER srid=0);

参数说明

  • geomgml:GML 字符串。
  • srid: 空间参考系ID。可选,默认值0时,使用 GML 中 srsName 属性。

函数返回类型

GEOMETRY 类型

使用说明

  1. 仅适用于 GML 的几何部分。 尝试将其用于整个 GML 文档时会引发错误。
  2. 支持的 OGC GML 版本包括:
  • GML 3.2.1 命名空间
  • GML 3.1.1 简单功能配置文件 SF-2(向后兼容 GML 3.1.0 和 3.0.0)
  • GML 2.1.2
  1. GML 允许混合维度(例如,同一 MULTIGEOMETRY 内的 2D 和 3D),但此函数不支持。如果一旦发现缺失的 Z 维度,该函数会将整个几何图形转换为 2D。
  2. GML 支持同一 MULTIGEOMETRY 内的混合空间坐标系 ,但此函数不支持。此函数会将所有子几何图形重新投影到 SRS 根节点。 如果 GML 根节点没有可用的 srsName 属性,则该函数会抛出错误。
  3. 该函数使用于在 GML 中使用 XLink 功能。
  4. 该函数支持 3d 并且不会丢失 z-index。
  5. 该函数支持多面体曲面。
  6. 此函数支持三角形和不规则三角网面 (TIN)。

注意

函数不支持 SQL/MM 曲线几何形状。

示例

具有 srsName 属性的单个几何图形:

sql
SQL> SELECT TO_CHAR(ST_ASEWKT(ST_GEOMFROMGML('
         <gml:LineString xmlns:gml="http://www.opengis.net/gml"
                             srsName="EPSG:4269">
             <gml:coordinates>
                 -71.16028,42.258729 -71.160837,42.259112 -71.161143,42.25932
             </gml:coordinates>
         </gml:LineString>')));
+------------------------------------------------------------------------------------+
|                                       EXPR1                                        |
+------------------------------------------------------------------------------------+
| SRID=4269;LINESTRING(-71.16028 42.258729,-71.160837 42.259112,-71.161143 42.25932) |
+------------------------------------------------------------------------------------+

XLink使用法:

sql
SQL> SELECT TO_CHAR(ST_AsEWKT(ST_GeomFromGML('
         <gml:LineString xmlns:gml="http://www.opengis.net/gml"
                 xmlns:xlink="http://www.w3.org/1999/xlink"
                 srsName="urn:ogc:def:crs:EPSG::4269">
             <gml:pointProperty>
                 <gml:Point gml:id="p1"
     ><gml:pos
     >42.258729 -71.16028</gml:pos
     ></gml:Point>
             </gml:pointProperty>
             <gml:pos
     >42.259112 -71.160837</gml:pos>
             <gml:pointProperty>
                 <gml:Point xlink:type="simple" xlink:href="#p1"/>
             </gml:pointProperty>
         </gml:LineString>
     ')));

+------------------------------------------------------------------------------------+
|                                       EXPR1                                        |
+------------------------------------------------------------------------------------+
| SRID=4269;LINESTRING(42.258729 -71.16028,-71.160837 42.259112,42.258729 -71.16028) |
+------------------------------------------------------------------------------------+

多面体曲面:

sql

SQL> SELECT TO_CHAR(ST_AsEWKT(ST_GeomFromGML('
     <gml:PolyhedralSurface xmlns:gml="http://www.opengis.net/gml">
     <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
     >')));

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                             EXPR1                                                                                                              |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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))) |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+