2013-10-24 69 views
1

如何从该查询的结果中提取x,y坐标? 我已经尝试了许多变化,但他们都没有正常工作。如何从sql中获取(x,y)坐标convexhull

select * --This row should contain something like t.ch...x 
from (select sdo_aggr_convexhull (
    sdoaggrtype (
     sdo_geometry(2001, NULL, sdo_point_type(x, y, NULL), NULL, NULL), 
     0.5 
    ) 
    ) ch 
from table1 where name = '111') t 
; 

错误的结果:

SDO_AGGR_CONVEXHULL(SDOAGGRTYPE(SDO_GEOMETRY(2001,NULL,SDO_POINT_TYPE(X,Y,NULL),NULL,NULL),0.5))  
MDSYS.SDO_GEOMETRY(2003,null,null,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(x1,y1,x2,y2)) 

应该是这样的:

x1  y1 

x2  y2 

... 

回答

3

使用以下格式:

select x,y 
from table (
    select sdo_util.getvertices( 
      sdo_aggr_convexhull (
      sdoaggrtype (
       sdo_geometry(2001, NULL, sdo_point_type(x, y, NULL), NULL, NULL), 
       0.5 
      ) 
      ) 
     ) 
    from table1 
    where name = '111' 
) 
order by id; 

的sdo_util.getvertices函数提取从坐标纵坐标y并将它们转换为数组。 TABLE()构造然后将数组变成一个常规表。每个顶点还包含一个ID属性,您可以使用它来按照它们在多边形内出现的正确顺序对它们进行排序。

+0

谢谢。您的解决方案完美运作 – snow