orical空间数据类型GEOMETRY使用干货

orical空间数据类型GEOMETRY使用干货最近项目应用到了根据 GEOMETRY 类型数据范围内查询更新数据的操作 对于此种数据类型的小白 在这两天恶补了一些相关知识 做一些简单的分享

最近项目应用到了根据GEOMETRY类型数据范围内查询更新数据的操作,对于此种数据类型的小白,在这两天恶补了一些相关知识,做一些简单的分享。


GEOMETRY数据类型简介:点击打开链接orical空间数据类型GEOMETRY使用干货

可以参考这篇文章和以上图片了解基本数据格式和内容,下面直接上应用干货。


在项目应用中多为构建多边形与位置数据,或通过位置信息对数据进行操作,下面总结了这几天我的一些应用。

1.数据转换


STRUCT struct = (STRUCT) rs.getObject(“origin_geo”)

JDBC中resultHandler通过获取对象方式提取数据并强转为STRUCT,并 通过Oracle几何体转wkt几何操作可获取String类型的数据:

 / * Oracle几何体转wkt几何 * * @param struct * Oracle几何 * @return wkt几何 * @throws Exception */ public static String struct2Wkt(STRUCT struct) throws Exception { JGeometry geom = JGeometry.load(struct); String w = new String(new WKT().fromJGeometry(geom)); return w; }

通过以上操作可以得到String类型的数据,并进行范围计算;

2.范围计算

1.以某个点为中心点周边范围内检索数据,可以通过SDO_WITHIN_DISTANCE实现,具体如下

– 空间分析查询(113.,23.)周边十公里信息5条 SELECT B.id id, B.name name, B.dist dist FROM ( SELECT A.id id, A.name name, SDO_GEOM.SDO_DISTANCE(A.location,MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(113.,23.,0),NULL,NULL),1) dist FROM spatialtest A WHERE SDO_WITHIN_DISTANCE(A.LOCATION,MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(113.,23.,0),NULL,NULL),’distance=10000′) = ‘TRUE’ ORDER BY A.name ) B WHERE ROWNUM <= 5 ;

2.spatial的函数


用于判断一个几何体与另一个几何体的关系,我们用于判断当前点是否在某一个面(省份面、县市面、乡镇面)上。

  参数说明:

    sdo_Geometry1,sdo_Geometry2为空间数据对应的几何对象。

    Tolerance: 容许的精度范围;

   MASK参数:

    Anyinteract: sdo_Geometry2落在sdo_Geometry1面上包括在边上。

    Contains: sdo_Geometry2完全包含在sdo_Geometry1几何对象中,并且两个几何对象的边没有交叉。

    Coveredby: sdo_Geometry1完全包含在sdo_Geometry2中,并且这两个几何对象的边有一个或多个点相互重叠。

    Covers: sdo_Geometry2完全包含在sdo_Geometry1中,并且这两个几何对象的边有一个或多个点相互重叠。

    Disjoint: 两个几何没有重叠交叉点,也没有共同的边。

    Equal: 两个几何是相等的。

    Inside: sdo_Geometry1完全包含在sdo_Geometry2几何对象中,并且两个几何对象的边没有交叉。

    On: sdo_Geometry1的边和内部的线完全在sdo_Geometry2上。

    Overlapbdydisjoint: 两个几何对象交迭,但是边没有交叉。

    Overlapbdyintersect: 两个几何对象交迭,并且边有部分交叉。

    Touch: 两个几何对象有共同的边,但没有交叉。


下面上demo:

   假如以A点为原点,检索A的范围内的数据,包含与A相交的数据(例如一条高速公路B横跨a,b两省)

检索条件为:

select B.* from B where sdo_relate(B.GEOMETRY,SDO_GEOMETRY(?,8307), 'mask=anyinteract+contains+inside+touch+covers+overlapbdyintersect') = 'TRUE' 

以上:其中B为想要检索的目的数据,如一条高速公路,?部分为元范围数据,在?范围内搜索范围内的B数据,?在JDBC中传递String类型wkt参数即可,检索结果为范围内+在范围边界上+穿过范围的结果集。


MASK参数的拼装如上demo!










版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224688.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:22
下一篇 2026年3月17日 上午11:22


相关推荐

  • 阿里通义千问开源全新文生图模型Qwen-Image

    阿里通义千问开源全新文生图模型Qwen-Image

    2026年3月12日
    4
  • 关于电角度的理解[通俗易懂]

    关于电角度的理解[通俗易懂]从电磁分布的角度来看,永磁体(或励磁)产生的磁场空间分布呈现周期性变化,一个周期为电角度的360度。显然从任意N极出发沿着某圆周方向经过S极再到下一个N极为一个周期的电角度。此过程中永磁体经过了级对数p个电极,即电周期进行了p个,那么p极对数转一圈的电角度则为p*360度…

    2025年6月10日
    5
  • 复录比低的计算机学校,这7所报录比低的实力院校,赶紧捡漏一波!

    复录比低的计算机学校,这7所报录比低的实力院校,赶紧捡漏一波!原标题:这7所报录比低的实力院校,赶紧捡漏一波!俗话说:考研选对专业和院校,就等于成功了一半。很多准考研er对如何选择适合自己的院校仍感到很焦虑,而报录比就是选择院校专业很重要的参与因素之一。报录比报录比是指报考人数和实际录取人数的比例,可以帮助考生了解院校报考人数、拟录取人数与实际录取人数之间的比例。如果报录比大于1,就说明报考的人数比录取的人数多;如果报录比小于1,就说明报考的人数比录取的人数…

    2022年6月9日
    60
  • CentOS7打开、关闭端口[通俗易懂]

    CentOS7打开、关闭端口[通俗易懂]CentOS7使用的是firewall防火墙,不再是原来的iptables1:查看firewall防火墙状态firewall-cmd–state或者systemctlstatusfirewalld2:打开防火墙systemctlstartfirewalld3:关闭防火墙systemctlstopfire…

    2022年7月20日
    17
  • linux中samba服务器搭建(手机samba服务器)

    一、Samba概述Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(ServerMessagesBlock,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。win…

    2022年4月14日
    53
  • 知识图谱入门 【七】- 知识推理

    知识图谱入门 【七】- 知识推理知识推理任务分类所谓推理就是通过各种方法获取新的知识或者结论,这些知识和结论满足语义。其具体任务可分为可满足性(satisfiability)、分类(classification)、实例化(materialization)。可满足性可体现在本体上或概念上,在本体上即本体可满足性是检查一个本体是否可满足,即检查该本体是否有模型。如果本体不满足,说明存在不一致。概念可满足性即检查某一概念的可满足性,即检查是否具有模型,使得针对该概念的解释不是空集。上图是两个不可满足的例子,第一个本体那个是…

    2022年6月4日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号