ST_GeomFromGML — Accetta una geometria in formato GML come input e restituisce un oggetto PostGIS geometry
geometry ST_GeomFromGML(text geomgml);
geometry ST_GeomFromGML(text geomgml, integer srid);
Costruisce un oggetto PostGIS ST_Geometry a partire da una rappresentazione OGC GML
ST_GeomFromGML supporta solo singole geometrie in formato GML. Ritorna un errore se si cerca di usare l'intero documento GML.
Versioni di OGC GML supportate:
GML 3.2.1 Namespace
GML 3.1.1 Simple Features profile SF-2 (con retrocompatibilità GML 3.1.0 e 3.0.0)
GML 2.1.2
OGC GML standards, cf: http://www.opengeospatial.org/standards/gml:
Disponibilità: 1.5, richiede libxml2 1.6+
Miglioramento nella version 2.0.0: introdotto il supporto per superfici poliedriche e TIN.
Miglioramento nella versione: 2.0.0 introdotto opzionale parametro SRID.
Questa funzione supporta il 3d e non distrugge gli z-index.
Questa funzione supporta le Polyhedral Surface.
Questa funzione supporta i Triangoli e le Triangulated Irregular Network Surfaces (TIN).
In formato GML permette di combinare diverse dimensioni (per esempio la stessa multigeometria può contenere elementi in 2D e 3D contemporaneamente). Siccome le geometrie PostGIS non supportano la combinazione di diverse dimensioni, la funzione ST_GeomFromGML converte l'intera geometria in 2D se almeno un elemento è in 2D.
Il formato GML supporta la combinazione di diversi SRID all'interno della stessa multigeometria. Siccome le geometrie PostGIS non supportano questa combinazione, la funzione ST_GeomFromGML riproietta tutte le sottogeometrie nello SRID del nodo root. Se il nodo root non contiene l'attributo srsName, la funzione restituisce un errore.
La funzione ST_GeomFromGML non richiede dell'indicazione esplicita di un namespace GML. Nell'uso comune una indicazione specifica. non è necessaria. Il namespace deve però essere indicato esplicitamente se si vuole usare la feature XLink all'interno di GML.
|
|
|
ST_GeomFromGML non supporta geometrie curve 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)))
Section 2.2.3, “Configurazione della compilazione”, ST_AsGML, ST_GMLToSQL