是否有可能使用Oracle来执行相当于ST_Boundary的操作?从多边形得到一个LINESTRING/MULTILINESTRING,还是从LINESTRING获得一个多点?
我知道其他供应商支持它:
发布于 2022-10-04 16:24:59
要获得边界,请参见UTIL.POLYGONTOLINE
在fn中没有内置的linestring到multipoint。但是这里有一个简单的fn来完成它(假设为2D):
CREATE OR REPLACE FUNCTION multipoint_from_line (line_geom SDO_GEOMETRY)
RETURN SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE IS
multipoint SDO_GEOMETRY := NULL;
BEGIN
IF line_geom IS NOT NULL
THEN
multipoint := line_geom;
IF multipoint.sdo_ordinates.count = 0
THEN
multipoint := NULL;
ELSE
multipoint.sdo_gtype := 2005;
multipoint.sdo_elem_info :=
sdo_elem_info_array(1,1,multipoint.sdo_ordinates.count/2);
END IF;
END IF;
return multipoint;
END;
/
-- Calling from SQL
SELECT multipoint_from_line
(sdo_geometry(2002,4326,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,1,1,3,3)))
FROM dual;
-- Calling from PL/SQL
DECLARE
multipoint SDO_GEOMETRY;
BEGIN
multipoint := multipoint_from_line
(sdo_geometry(2002,4326,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,1,1,3,3)));
END;
/https://stackoverflow.com/questions/73749709
复制相似问题