空间操作符

一、主要空间操作符

1、SDO_FILTER

SDO_FILTER(geometry1, geometry2, param);

判断两个几何体是否有相交

SELECT c.mkt_id, c.name

FROM cola_markets c

WHERE SDO_FILTER(c.shape,

SDO_GEOMETRY(2003,

NULL,

NULL,

SDO_ELEM_INFO_ARRAY(1, 1003, 3),

SDO_ORDINATE_ARRAY(4, 6, 8, 8))) = 'TRUE';

2、SDO_JOIN

SDO_JOIN(table_name1, column_name1, table_name2, column_name2, params,

preserve_join_order) RETURN SDO_ROWIDSET;

SELECT /*+ ordered */

a.name, b.name

FROM TABLE(SDO_JOIN('COLA_MARKETS',

'SHAPE',

'COLA_MARKETS',

'SHAPE',

'mask=ANYINTERACT')) c,

cola_markets a,

cola_markets b

WHERE c.rowid1 = a.rowid

AND c.rowid2 = b.rowid

ORDER BY a.name;

3、SDO_NN

SDO_NN(geometry1, geometry2, param [, number]);

在指定的距离内,按顺序返回离的最近的。

性能调优参数

sdo_num_res 指定返回离指定点最近的两个市场

sdo_batch_size 指定了一次批量提取多少条记录进行对比

SELECT /*+ INDEX(c cola_spatial_idx) */

c.mkt_id, c.name

FROM cola_markets c

WHERE SDO_NN(c.shape,

sdo_geometry(2001,

NULL,

sdo_point_type(10, 7, NULL),

NULL,

NULL),

'sdo_num_res=2') = 'TRUE';

SELECT /*+ INDEX(c cola_spatial_idx) */

c.mkt_id, c.name

FROM cola_markets c

WHERE SDO_NN(c.shape,

sdo_geometry(2001,

NULL,

sdo_point_type(10, 7, NULL),

NULL,

NULL),

'sdo_batch_size=3') = 'TRUE'

AND c.name < 'cola_d'

AND ROWNUM <= 2;

4、SDO_NN_DISTANCE

SDO_NN_DISTANCE(number);

Number必须与sdo_nn操作符的最后一个参数保持一致。

Sdo_nn操作符是通过计算距离来识别客户的,我们可以通过sdo_nn_distance辅助操作符来获取这些距离。

在使用该操作符时,必须指定一个性能调优参数,sdo_num_res或sdo_batch_size,如果不知道如何设置sdo_batch_size的值,就将其设为0,索引会在内部使用合适的值。

SELECT /*+ INDEX(c cola_spatial_idx) */

c.mkt_id, c.name, SDO_NN_DISTANCE(1) dist

FROM cola_markets c

WHERE SDO_NN(c.shape,

sdo_geometry(2001,

NULL,

sdo_point_type(10, 7, NULL),

NULL,

NULL),

'sdo_num_res=2',

1) = 'TRUE'

ORDER BY dist;

5、SDO_RELATE

SDO_RELATE(geometry1, geometry2, param);

判断两个几何体的关系

SELECT a.gid

FROM polygons a, query_polys B

WHERE B.gid = 1

AND SDO_RELATE(A.Geometry, B.Geometry, 'mask=touch') = 'TRUE'

UNION ALL

SELECT a.gid

FROM polygons a, query_polys B

WHERE B.gid = 1

AND SDO_RELATE(A.Geometry, B.Geometry, 'mask=coveredby') = 'TRUE';

SELECT c.mkt_id, c.name

FROM cola_markets c

WHERE SDO_RELATE(c.shape,

SDO_GEOMETRY(2003,

NULL,

NULL,

SDO_ELEM_INFO_ARRAY(1, 1003, 3),

SDO_ORDINATE_ARRAY(4, 6, 8, 8)),

'mask=anyinteract') = 'TRUE';

6、SDO_WITHIN_DISTANCE

SDO_WITHIN_DISTANCE(geometry1, aGeom, params);

返回与指定点相距指定的距离内的某表的几何对象

SELECT c.name

FROM cola_markets c

WHERE SDO_WITHIN_DISTANCE(c.shape,

SDO_GEOMETRY(2003,

NULL,

NULL,

SDO_ELEM_INFO_ARRAY(1, 1003, 3),

SDO_ORDINATE_ARRAY(4, 6, 8, 8)),

'distance=10') = 'TRUE';

二、关系操作符

语法:

操作符OVERLAPBDYDISJOINT(geometry1, geometry2);

1、SDO_ANYINTERACT

2、SDO_CONTAINS

3、SDO_COVEREDBY

4、SDO_COVERS

5、SDO_EQUAL

6、SDO_INSIDE

7、SDO_ON

8、SDO_OVERLAPBDYDISJOINT

9、SDO_OVERLAPBDYINTERSECT

10、SDO_OVERLAPS

11SDO_TOUCH

 

空间函数与操作符的对比

1、 空间操作符使用的表必须有空间索引;

空间操作符执行速度比函数快,因此可以采用操作符的情况下就使用操作符

Oracle_spatial的空间操作符介绍的更多相关文章

  1. SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)

    今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...

  2. PHP5.3 goto操作符介绍

    goto操作符是PHP5.+后新增功能,用来跳转到程序的另一位置:用法很简单:goto后面带上目标位置的标志,在目标位置上用目标名加冒号标记如下: <?php goto a; echo 'aaa ...

  3. oracle 创建表空间详细介绍

    注意点: 1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在,比如[D:\oracle\oradata\Oracle9i\]也就是你要保存文件的路径存 ...

  4. 磁盘格式化、磁盘挂载、手动增加swap空间 使用介绍

    第4周第2次课(4月10日) 课程内容: 4.5/4.6 磁盘格式化4.7/4.8 磁盘挂载4.9 手动增加swap空间 4.5/4.6 磁盘格式化 [root@jimmylinux-002 ~]# ...

  5. Oracle_spatial的函数介绍[转]

    Oracle_spatial的函数 一sdo_Geom包的函数: 用于表示两个几何对象的关系(结果为True/False)的函数:RELATE,WITHIN_DISTANCE 验证的函数:VALIDA ...

  6. Oracle_spatial的函数介绍

    Oracle_spatial的函数 一sdo_Geom包的函数: 用于表示两个几何对象的关系(结果为True/False)的函数:RELATE,WITHIN_DISTANCE 验证的函数:VALIDA ...

  7. MySQL中的空间扩展

    目录 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 1 ...

  8. C#基础知识之字符串比较方法:“==”操作符;RefernceEquals;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。

    一.“==”操作符:String.Equals:ReferenceEquals 方法 1.在编程中实际上我们只需要这两种比较,c#中类型也就这两种 (1)值类型的比较:一般我们就是判断两个值类型实例各 ...

  9. Oracle_spatial的常见错误与注意事项

    常见的错误 1.ORA-13226:没有空间索引接口将不被支持 当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误.这可能会发生在当你使用的列上没有空间索引.或者优化器没 ...

随机推荐

  1. Mac Hadoop的安装与配置

    这里介绍Hadoop在mac下的安装与配置. 安装及配置Hadoop 首先安装Hadoop $ brew install Hadoop 配置ssh免密码登录 用dsa密钥认证来生成一对公钥和私钥: $ ...

  2. [转]WordPress主题开发:主题初始化

    本文转自:http://www.cnblogs.com/tinyphp/p/4391182.html 在最简单的情况下,一个WordPress主题由两个文件构成: index.php -------- ...

  3. 自定义一个可以动态折叠的UITAbleViewCell

    看到code 4APP上有一个折叠的UITAbleViewCell,不过是swift的,所以自己尝试做一个简单的可折叠的UITAbleViewCell 主要实现一个可以折叠的UITAbleViewCe ...

  4. 新版TeamTalk部署教程

    新版TeamTalk部署教程 新版TeamTalk已经在2015年03月28日发布了,目前版本定为1.0.0版本,后续版本号会按照如下规则进行:1.版本规则按照x.y.z的形式进行.2.各端小bug修 ...

  5. JS中那些让人头昏眼花的弯子

    看别人在讨论,于是整理了下,大家来看看下面代码中1-11分别输出的答案是什么???(不要试过再说) var obj={ a:1, b:2, add:function(c,d){ console.log ...

  6. 【13】享元模式(FlyWeight Pattern)

    一.引言 在软件开发过程,如果我们需要重复使用某个对象的时候,若重复地使用new创建这个对象的话,就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非常严重.享元模式可以 ...

  7. Docker:集装箱式“运输”在软件上的实现

    Docker是由PaaS提供商dotCloud在2013年年初创建的一款开源应用引擎,Docker可以自动将任何应用打包成轻量.可移植.自包涵的容器引擎.开发者构建的应用可以一次构建全平台运行,包括本 ...

  8. python学习之老男孩python全栈第九期_day015作业_老男孩Python全9期练习题(面试真题模拟)

    一. 选择题(32分) 1. python不支持的数据类型有:AA. charB. intC. floatD. list 2. Ex = ‘foo’y = 2print(x + y)A. fooB. ...

  9. vue-resource获取不了数据,和ajax的区别,及vue-resource用法

    前几天用vue-resource调用接口,用post方式给后端,发现后端php接受不到数据,这好奇怪,最后发现提交给后端的时候 需要加一个参数 就是:emulateJSON : true 这句话的意思 ...

  10. node.js(express)连接mongoDB入门指导

    一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二 ...