Для заданного объекта (линии или области) и для всех его элементов мне нужно извлечь координаты (1) всех вершин, (2) первая вершина и (3) последняя вершина ( 3 отдельных запроса для создания 3 различных наборов результаты )
Я использую пространственный Oracle.
Я протестировал этот sql-код для таблицы ARAMAL (это трехмерная линейная сущность; столбец первичного ключа: IPID; геометрический столбец: GEOMETRY), и он хорошо работает.
(1) - Список все вершин
ВЫБРАТЬ A.IPID, t.X, t.Y, t.Z, t.id ИЗ АРАМАЛЯ A,
TABLE (SDO_UTIL.GETVERTICES (A.GEOMETRY)) t ЗАКАЗАТЬ A.IPID, t.id;
Результат (пример для IPID = 1479723):
IPID X Y Z id
1479723 -99340.38408 -102364.3603 10 1
1479723 -99341.21035 -102366.2701 11 2
1479723 -99342.03375 -102368.1783 12 3
1479723 -99342,86238 -102370.0875 13 4
... ... .... ... ...
(2) - Список первый вершина
ВЫБРАТЬ A.IPID, t.X, t.Y, t.Z, t.id ИЗ АРАМАЛЯ A,
TABLE (SDO_UTIL.GETVERTICES (A.GEOMETRY)) t, где t.id = 1 ПОРЯДОК A.IPID;
Результат (пример для IPID = 1479723)
IPID X Y Z id
1479723 -99340.38408 -102364.3603 10 1
- (3) Как мне получить последнюю вершину чисто с помощью sql (без дополнительных функций)?
(Ожидаемый) Результат (пример для IPID = 1479723)
IPID X Y Z id
1479723 -99342,86238 -102370.0875 13 4
Полагаю, этот процесс мог бы выполняться быстрее, если бы я использовал определенные функции - я также хотел бы использовать их.
Я наткнулся на отличный сайт (Саймон Гринер) с некоторыми функциями, которые, я думаю, могли бы сработать
http://spatialdbadvisor.com/oracle_spatial_tips_tricks/322/st_vertexn-extracting-a-specific-point-from-any-geometry
Функции:
ST_StartPoint
CREATE OR REPLACE
FUNCTION ST_StartPoint(p_geom IN mdsys.sdo_geometry)
RETURN mdsys.sdo_geometry
IS
BEGIN
RETURN ST_PointN(p_geom,1);
END ST_StartPoint;
/
ST_EndPoint
CREATE OR REPLACE
FUNCTION ST_EndPoint(p_geom IN mdsys.sdo_geometry)
RETURN mdsys.sdo_geometry
IS
BEGIN
RETURN ST_PointN(p_geom,-1);
END ST_EndPoint;
/
Я новичок в этом мире, и я не совсем понимаю синтаксис этих функций ...
- Для таблицы ARAMAL, которую я использовал ранее, как я должен использовать / применять их, чтобы получить результаты (и в формате), которые мне нужны?
IPID X Y Z id
1479723 -99340.38408 -102364.3603 10 1
....
Заранее спасибо,
С наилучшими пожеланиями,
Pedro