Oracle_spatial的空间操作符介绍
空间操作符
一、主要空间操作符
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
11、SDO_TOUCH
空间函数与操作符的对比
1、 空间操作符使用的表必须有空间索引;
空间操作符执行速度比函数快,因此可以采用操作符的情况下就使用操作符
Oracle_spatial的空间操作符介绍的更多相关文章
- SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)
今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...
- PHP5.3 goto操作符介绍
goto操作符是PHP5.+后新增功能,用来跳转到程序的另一位置:用法很简单:goto后面带上目标位置的标志,在目标位置上用目标名加冒号标记如下: <?php goto a; echo 'aaa ...
- oracle 创建表空间详细介绍
注意点: 1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在,比如[D:\oracle\oradata\Oracle9i\]也就是你要保存文件的路径存 ...
- 磁盘格式化、磁盘挂载、手动增加swap空间 使用介绍
第4周第2次课(4月10日) 课程内容: 4.5/4.6 磁盘格式化4.7/4.8 磁盘挂载4.9 手动增加swap空间 4.5/4.6 磁盘格式化 [root@jimmylinux-002 ~]# ...
- Oracle_spatial的函数介绍[转]
Oracle_spatial的函数 一sdo_Geom包的函数: 用于表示两个几何对象的关系(结果为True/False)的函数:RELATE,WITHIN_DISTANCE 验证的函数:VALIDA ...
- Oracle_spatial的函数介绍
Oracle_spatial的函数 一sdo_Geom包的函数: 用于表示两个几何对象的关系(结果为True/False)的函数:RELATE,WITHIN_DISTANCE 验证的函数:VALIDA ...
- MySQL中的空间扩展
目录 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 1 ...
- C#基础知识之字符串比较方法:“==”操作符;RefernceEquals;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。
一.“==”操作符:String.Equals:ReferenceEquals 方法 1.在编程中实际上我们只需要这两种比较,c#中类型也就这两种 (1)值类型的比较:一般我们就是判断两个值类型实例各 ...
- Oracle_spatial的常见错误与注意事项
常见的错误 1.ORA-13226:没有空间索引接口将不被支持 当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误.这可能会发生在当你使用的列上没有空间索引.或者优化器没 ...
随机推荐
- ASP.NET MVC实现剪切图片
开发需要,我们需要对某一张图片进行剪切.就是说,获取图片某一区域.下面Insus.NET教大家轻便容易实现它. 首先写好一个处理函数,它建在MVC应用程序结构Utilities目录下: 准备好一张图片 ...
- WCF发布多个服务
using System; using System.Collections.Generic; using System.Linq; using System.Text; using WcfServi ...
- 设计模式之单例模式(Singleton)(1)
单例模式是一种比较简单的设计模式,简单来说,就是确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式特点: 1)单例类只能有一个实例. 2)单例类必须自己创建自己的唯一实例. 3 ...
- cakephp怎么默认显示index/index文件
在配置好cakephp之后,我们输入网址后都一般默认显示index/index 文件,那么怎么设置呢? 1.D:\www\cakephp\app\Config\routes.php
- 设计模式原则(6)--Open-Closed Principle(OCP)--开闭原则
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.定义: 一个软件实体应当对扩展开放,对修改关闭.即软件实体应尽量在不修改原有代码的情况下进行扩展. 2.使用场 ...
- BZOJ3601 一个人的数论
Description 定义 \[ f_k(n)=\sum_{\substack{1\leq i\leq n\\gcd(i,n)=1}}i^k \] 给出\(n=\prod_{i=1}^w p_i^{ ...
- js-ES6学习笔记-Reflect
1.Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API.Reflect对象的设计目的有这样几个. 将Object对象的一些明显属于语言内部的方法(比如Object.d ...
- phpstudy集成下Apache配置部署https安全证书
一..先申请到安全证书.(腾讯云或者阿里云申请免费1年的安全证书),怎么申请这里也说下(以腾讯云为例): 1.登录腾讯云QQ或微信登录都行,第一次登录要通过实名认证,点击[产品]---[ss证书l] ...
- OSGI企业应用开发(九)整合Spring和Mybatis框架(二)
上篇文章中,我们完成了在OSGI应用中整合Spring和Mybatis框架的准备工作,本节我们继续Spring和Mybatis框架的整合. 一.解决OSGI整合Spring中的Placeholder问 ...
- 2018-10-18 22:15:32 c language
2018-10-18 22:15:32 c language 在屏幕上输出各种类型的数据 我们使用 puts 来输出字符串.puts 是 output string 的缩写,只能用来输出字符串,不能输 ...