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 Namespace
GML 3.1.1 Simple Features profile SF-2 (GML 3.1.0と3.0.0の後方互換)
GML 2.1.2
OGC GML標準については、http://www.opengeospatial.org/standards/gmlをご覧下さい。
Availability: 1.5 libxml2 1.6+が必要です。
Enhanced: 2.0.0 多面体サーフェス対応とTIN対応が導入されました。
Enhanced: 2.0.0 SRID任意引数が追加されました。
This function supports 3d and will not drop the z-index.
This function supports Polyhedral surfaces.
This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).
GMLは、複合次元 (たとえば、2次元と3次元が同じMultiGeometry内にある)を許します。PostGISジオメトリは許さないので、ST_GeomFromGMLは、Z次元が無いジオメトリを一つでも発見すると、ジオメトリ全体を2次元に変換します。
GMLは同じMultiGeometry内での複合SRSをサポートします。PostGISではサポートしないので、ST_GeomFromGMLは、この場合には、全てのサブジオメトリをルートノードのSRSに投影変換します。GMLのルートノードにsrsName属性が無い場合、関数はエラーを投げます。
ST_GeomFromGML関数は、明示的なGML名前空間について杓子定規ではありません。共通使用で名前空間の明示を避けることができます。ただし、GML内でXLink機能を使いたい場合は必要です。
ST_GeomFromGMLはSQL/MM曲線ジオメトリに対応していません。 |
SELECT ST_GeomFromGML(' <gml:LineString 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> <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)))