首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDO_INTERSECTION无法正确读取返回

SDO_INTERSECTION无法正确读取返回
EN

Stack Overflow用户
提问于 2018-12-12 11:13:27
回答 2查看 250关注 0票数 0

这是SDO_INTERSECTION:objgeom.htm#SPATL1118的文档

这是我的密码:

代码语言:javascript
复制
PROCEDURE ciudadInterseccionCarretera (carretera1 IN VARCHAR2,carretera2 IN 
VARCHAR2) IS
tupla Extremadura%ROWTYPE;
geomResultado SDO_GEOMETRY;
BEGIN

        SELECT SDO_GEOM.SDO_INTERSECTION(ex1.Geom,ex2.Geom,0.05) INTO geomResultado
        FROM Extremadura ex1, Extremadura ex2
        WHERE ex1.Nombre = carretera1 AND ex2.Nombre = carretera2;

        DBMS_OUTPUT.PUT_LINE('ciudad Intersección : '||geomResultado.SDO_GTYPE||' '||geomResultado.SDO_POINT.X);
 END ciudadInterseccionCarretera;

ciudad Intersección :2001年

当我执行代码时,geomResultado正在正确地返回SDO_GTYPE,它返回2001,因为carretera1和carretera2之间的交点是一个点。但是,我无法返回,例如,使用geomResultado.SDO_POINT.X的这种点的X坐标。有什么想法吗?我想我的密码没问题..。

编辑:此外,当我试图使用这段代码寻找两行的交集时,查询的结果是空的,所以问题在SDO_POINT中是100%。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-12 14:02:59

Oracle有两种存储点几何的方法

第一个是在sdo_point的sdo_geometry部分。

Sdo_geometry(2001年,null,sdo_point(x,y,null),null,null)

另一个是在纵坐标数组中作为纵坐标:

Sdo_geometry(2001年,null,null,sdo_elem_info_array(1,1,1),sdo_ordinate_array(x,y))

在这种情况下,sdo_intersection返回坐标数组中的几何。你必须从那里得到值。

示例:

代码语言:javascript
复制
declare
   l_geo1 sdo_geometry := sdo_geometry(2001
                                      ,null
                                      ,null
                                      ,sdo_elem_info_array(1, 2, 1)
                                      ,sdo_ordinate_array(0, 0, 10, 10));
   l_geo2 sdo_geometry := sdo_geometry(2001
                                      ,null
                                      ,null
                                      ,sdo_elem_info_array(1, 2, 1)
                                      ,sdo_ordinate_array(0, 10, 10, 0));

   l_geo3 sdo_geometry;

   l_x number;
   l_y number;
begin

   l_geo3 := sdo_geom.sdo_intersection(l_geo1, l_geo2, 0.05);

   l_x := l_geo3.sdo_ordinates(1);
   l_y := l_geo3.sdo_ordinates(2);

   dbms_output.put_line(l_x || ' ' || l_y);
end;
票数 1
EN

Stack Overflow用户

发布于 2018-12-12 17:33:00

正如Rene所建议的,解决这个问题的方法就是使用以下方法来请求坐标:

代码语言:javascript
复制
geomResultado.SDO_ORDINATES(1);
geomResultado.SDO_ORDINATES(2);

对于X和Y坐标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53741804

复制
相关文章

相似问题

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