ST_GeomFromGML — 接收幾何圖形的 GML 表示法作為輸入,並輸出 PostGIS 幾何物件
geometry ST_GeomFromGML(
text geomgml)
;
geometry ST_GeomFromGML(
text geomgml, integer srid)
;
從 OGC GML 表示法建構 PostGIS ST_Geometry 物件。
ST_GeomFromGML 僅適用於 GML 幾何片段。如果您嘗試將其用於整個 GML 文件,則會擲回錯誤。
支援的 OGC GML 版本
GML 3.2.1 命名空間
GML 3.1.1 簡易功能設定檔 SF-2(與 GML 3.1.0 和 3.0.0 向後相容)
GML 2.1.2
OGC GML 標準,參見:http://www.opengeospatial.org/standards/gml
可用性:1.5,需要 libxml2 1.6+
增強功能:2.0.0 引入了對多面體表面和 TIN 的支援。
增強功能:2.0.0 新增了可選的預設 srid 參數。
此函數支援 3D,且不會捨棄 Z 索引。
此函數支援多面體表面。
此函數支援三角形和三角不規則網路表面 (TIN)。
GML 允許混合維度(例如,在同一個 MultiGeometry 內混合 2D 和 3D)。由於 PostGIS 幾何圖形不支援,如果發現缺少 Z 維度,ST_GeomFromGML 會將整個幾何圖形轉換為 2D。
GML 支援在同一個 MultiGeometry 內混合 SRS。由於 PostGIS 幾何圖形不支援,在這種情況下,ST_GeomFromGML 會將所有子幾何圖形重新投影到 SRS 根節點。如果 GML 根節點沒有 srsName 屬性,此函數會擲回錯誤。
ST_GeomFromGML 函數對於明確的 GML 命名空間並非過於拘謹。您可以避免在一般用法中明確提及它。但是,如果您想在 GML 內使用 XLink 功能,則需要它。
![]() |
|
ST_GeomFromGML 函數不支援 SQL/MM 曲線幾何圖形。 |
SELECT 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> $$);
SELECT 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> $$);
SELECT 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>')); -- result -- 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)))