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