名稱

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) 元素的形式傳回。如果指定了 version 參數,則它可以是 2 或 3。如果未指定 version 參數,則預設為 2。maxdecimaldigits 引數可用於減少輸出中使用的小數位數上限(預設為 15)。

[Warning]

使用 maxdecimaldigits 參數可能會導致輸出幾何圖形失效。為了避免這種情況,請先使用具有合適網格大小的 ST_ReducePrecision

GML 2 指的是 2.1.2 版本,GML 3 指的是 3.1.1 版本

「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 輸出,與軸順序相關。因此,如果設定此選項,它會交換坐標,使順序為緯度 經度,而不是資料庫中的經度 緯度。

  • 32:輸出幾何圖形的邊界框(外包)。

「命名空間前綴」引數可用於指定自訂命名空間前綴或不使用前綴(如果為空)。如果為 null 或省略,則使用 'gml' 前綴

可用性:1.3.2

可用性:1.5.0 引入了地理支援。

增強功能:2.0.0 引入了前綴支援。引入了 GML3 的選項 4,以允許對線條使用 LineString 而不是 Curve 標籤。引入了對多面體表面和 TIN 的 GML3 支援。引入了選項 32 來輸出邊界框。

已變更:2.0.0 使用預設具名引數

增強功能:2.1.0 引入了對 GML 3 的 id 支援。

[Note]

只有 3+ 版本的 ST_AsGML 支援多面體表面和 TIN。

此方法實作 SQL/MM 規範。SQL-MM IEC 13249-3: 17.2

此函數支援 3D,且不會丟棄 z 索引。

此函數支援多面體表面。

此函數支援三角形和不規則三角網表面 (TIN)。

範例:版本 2

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>

範例:版本 3

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

另請參閱

ST_GeomFromGML