1

このクエリの結果から x,y 座標を抽出するにはどうすればよいですか? 多くのバリエーションを試しましたが、どれも正しく機能しませんでした。

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

...
4

1 に答える 1

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 関数は、座標配列から座標を抽出し、それらを配列にキャストします。TABLE() コンストラクトは、配列を通常のテーブルにフラット化します。各頂点には、ポリゴン内に表示される適切な順序で並べ替えるために使用できる ID 属性も含まれています。

于 2013-10-24T17:13:13.230 に答える