2013-10-24 101 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