在PostGIS 2.0中,我尝试:
select ST_GeomFromGML(
'<gml:Point srsName="urn:ogc:def:crs:EPSG::28992">
<gml:pos>275466.0 565559.0 0.0</gml:pos>
</gml:Point>');
这会产生一个错误:
********** Error **********
ERROR: invalid GML representation
SQL state: XX000
Context: SQL function "st_geomfromgml" statement 1
我的观点有什么错?
当你实际上有一个3D几何体时,即使你可能没有使用Z维度,解析器看起来就像是在假设一个2D几何体,除非你的点在海平面上(它是0.0)。如果你明确地声明维度属性,你会得到正确的结果:
SELECT ST_AsText(ST_GeomFromGML(
'<gml:Point srsName="urn:ogc:def:crs:EPSG::28992">
<gml:pos dimension="3">275466.0 565559.0 0.0</gml:pos>
</gml:Point>'));
st_astext
---------------------------
POINT Z (275466 565559 0)
(1 row)