当前位置: 首页 > news >正文

ArcSDE vs. Oracle Spatial 13

I. 空间关系运算

以上两个章节是必不可少的基础,涉及到空间数据在数据库中的存储和通过索引加速空间数据的获取。从这句话也可以看出,后续的章节并不是必须的,也就是说某些基于空间数据的应用可能并不需要诸如空间关系判断、几何对象处理等功能。这并不是说这些功能就用不着了,而是这些功能并不一定需要在数据库端执行。比如基于ArcSDE,这些空间算法和功能在ArcGIS的产品线中无处不在,很多时候都不会把这些功能放到数据库上去。

· Oracle Spatial

在Oracle Spatial中,主要的空间关系操作在下表中列出:

空间操作

描述

SDO_FILTER

主过滤,判断哪些几何对象可能和给定的几何对象相交

SDO_JOIN

基于一定空间关系的表连接

SDO_NN

查询离某个几何对象最近的几何对象

SDO_NN_DISTANCE

查询离某个几何对象最近的几何对象与当前对象的距离

SDO_RELATE

判断两个几何对象是否满足某种空间关系

SDO_WITHIN_DISTANCE

判断两个几何对象间距离是否小于某给定值

其中SDO_RELATE操作比较特殊,它通过mask参数来判断几何对象间是否满足某种空间关系,但是事实上如果都用参数来指定空间关系的话使用上就不太方便,因此,Oracle Spatial还提供了基于SDO_RELATE不同参数代表的不同空间关系的一些操作,如下表:

衍生自SDO_RELATE的空间操作

描述

SDO_ANYINTERACT

任意部分有相交

SDO_CONTAINS

SDO_COVEREDBY

SDO_COVERS

SDO_EQUAL

SDO_INSIDE

SDO_ON

SDO_OVERLAPBDYDISJOINT

SDO_OVERLAPBDYINTERSECT

SDO_OVERLAPS

SDO_TOUCH

image

下面我们看一些空间关系操作的大概用法,比如我用一个三角形去查询所有满足“INSIDE”关系的几何对象,我们可以通过以下两种等价的方式操作:

SQL> select continent from continent where sdo_inside(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)))='TRUE';

CONTINENT

---------------------------------------

Australia

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=INSIDE')='TRUE';

CONTINENT

---------------------------------------

Australia

image

图 13 判断和图示三角形满足一定空间关系的几何对象

虽然有一些比较方便的SDO_RELATE的衍生操作,不过SDO_RELATE支持更灵活的空间关系判断,比如以下的SQL语句可以查询和上面的三角形满足“OVERLAPBDYDISJOINT”关系、“INSIDE”关系及同时满足这两种关系的几何对象:

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=OVERLAPBDYDISJOINT')='TRUE';

CONTINENT

---------------------------------------

North America

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=INSIDE')='TRUE';

CONTINENT

---------------------------------------

Australia

SQL> select continent from continent where sdo_relate(geom, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0,180,-90,180,90,0,0)), 'mask=INSIDE+OVERLAPBDYDISJOINT')='TRUE';

CONTINENT

---------------------------------------

North America

Australia

相关文章:

  • JQuery 模式窗口插件
  • 基于Windows Phone的对讲机
  • Cheatsheet: 2010 04.01 ~ 04.07
  • Windows Phone 7开发版手机即将于下月发行
  • 实现Reporting Service2008 的匿名访问(亲测可行)
  • Reporting Service 学习笔记3 2010,0409
  • win7 与visual stdio 不兼容怎么办
  • [转]为DropdownList设置空白选项
  • ArcSDE vs. Oracle Spatial 14
  • 菜单扩展
  • Windows Phone 7的商务功能依然精彩
  • oracle客户端plsql设置(windows7)
  • 什么是云计算 以及能给我们带来什么
  • 字符串反序
  • Windows Phone 7: A New Kind of Phone
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • JavaScript类型识别
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Making An Indicator With Pure CSS
  • Terraform入门 - 3. 变更基础设施
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从重复到重用
  • 深入浅出webpack学习(1)--核心概念
  • 微服务核心架构梳理
  • 我有几个粽子,和一个故事
  • linux 淘宝开源监控工具tsar
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.ajax()
  • (5)STL算法之复制
  • (LeetCode 49)Anagrams
  • (二)学习JVM —— 垃圾回收机制
  • (九)c52学习之旅-定时器
  • (六)c52学习之旅-独立按键
  • (算法二)滑动窗口
  • (万字长文)Spring的核心知识尽揽其中
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (译)2019年前端性能优化清单 — 下篇
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET分布式缓存Memcached从入门到实战
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET委托:一个关于C#的睡前故事
  • .php文件都打不开,打不开php文件怎么办
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • /var/log/cvslog 太大
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [Angular 基础] - 数据绑定(databinding)
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [Flex][问题笔记]TextArea滚动条问题
  • [Gamma]阶段测试报告