首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle的ST_Boundary

Oracle的ST_Boundary
EN

Stack Overflow用户
提问于 2022-09-16 19:49:31
回答 1查看 48关注 0票数 0

是否有可能使用Oracle来执行相当于ST_Boundary的操作?从多边形得到一个LINESTRING/MULTILINESTRING,还是从LINESTRING获得一个多点?

我知道其他供应商支持它:

Boundary.html

https://learn.microsoft.com/en-us/sql/t-sql/spatial-geometry/stboundary-geometry-data-type?view=sql-server-ver16

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-04 16:24:59

要获得边界,请参见UTIL.POLYGONTOLINE

在fn中没有内置的linestring到multipoint。但是这里有一个简单的fn来完成它(假设为2D):

代码语言:javascript
复制
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;
/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73749709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档