日期:2014-05-16  浏览次数:22127 次

oracle spatial中,对sdo_geometry字段使用get_wkt() 函数为什么出错?
 oracle 版本:10g
 在表中建了一个sdo_geometry字段(字段名为shape,表名为tb_geo,里面存储了面信息)用来存储空间数据,里面的数据是利用shp2sdo从shape文件转换而来的。
 我现在想从数据库几何字段中提取出坐标信息, 利用语句
    select to_char(sdo_util.to_wktgeometry(shape)) wkt from tb_geo where id=1;
 结果提示出错:
   第 1 行出现错误:
ORA-13199: 0D geometries are not supported by geometry WKB/WKT generation.
ORA-06512: 在 "MDSYS.MD", line 1723
ORA-06512: 在 "MDSYS.MDERR", line 17
ORA-06512: 在 "MDSYS.SDO_UTIL", line 2441


利用sdo_util.to_gmlgeometry()函数可以得到字符串gml格式的数据,如下所示:
 GML
--------------------------------------------------------------------------------
<gml:MultiPolygon srsName="SDO:8307" xmlns:gml="http://www.opengis.net/gml"><gml
:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinate
s decimal="." cs="," ts=" ">-34.596287,-4.08403 -18.152958,-147.049641 -196.7457
82,-163.949729 -198.572819,-97.719654 -198.572819,-18.243563 -34.596287,-4.08403
 </gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></gml:po
lygonMember><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing
><gml:coordinates decimal="." cs="," ts=" ">-159.291533,-54.327535 -155.1807,-12
6.495479 -51.039616,-116.446778 -58.804521,-41.08152 -159.291533,-54.327535 </gm
l:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></gml:polygon
Member></gml:MultiPolygon>
是数据的原因吗?这是怎么回事呢?谢谢大家 

------解决方案--------------------
用to_char(shape.get_wkt()) 试试呢