Как получить координаты (x, y) из sql выпуклой оболочки

Как я могу извлечь координаты 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

...

1 ответ

Используйте следующий синтаксис:

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, который можно использовать для упорядочения их в правильной последовательности, в которой они появляются внутри многоугольника.

Другие вопросы по тегам