Oracle Spatial图层元数据坐标范围影响R-TREE索引的ROOT MBR吗?
Oracle Spatial的空间索引R-TREE,其实现原理为一级级的MBR(最小定界矩形)。我突然想到一个问题,它的ROOT MBR是怎么确定的?是根据元数据表user_sdo_geom_metadata中的diminfo来确定的吗?
我们知道,diminfo字段记录了坐标系各个维度的范围,那么,R-TREE中的ROOT MBR会参考这里的信息来生成吗?还是实时计算要素集的真实边界范围?带着这个疑问,我做了个小实验。
实验数据的情况如下:
|
表名 |
XZQ130802双桥区20131205 |
|
矢量字段类型 |
SDO_GEOMETRY |
|
空间索引类型 |
R-TREE |
|
要素个数 |
103 |
|
坐标系 |
NULL(图层的实际坐标系为4610(西安80地理坐标系),但由于使用地理坐标系时(即user_sdo_geom_metadata.srid=4610),R-TREE的ROOT MBR其类型为3008,即SOLID,是三维立方体。因此将该字段设为NULL,使ROOT MBR为2003,二维矩形。) |
|
X 坐标真实范围 |
117.838376577036 118.135164523345 |
|
Y 坐标真实范围 |
40.7245342149613 41.1363642171938 |
第一个实验:
将diminfo中的坐标范围改为(-180,180)(-90,90),然后创建空间索引。查看user_sdo_index_metadata中的SDO_ROOT_MBR:

可见ROOT MBR为矩形,左下坐标为117.838377,40.724534,右上坐标为118.135165,41.136364。
第二个实验:
将diminfo中的坐标范围改为(117.838376577036 118.135164523345)(40.7245342149613 41.1363642171938),然后创建空间索引。查看user_sdo_index_metadata中的SDO_ROOT_MBR:

结果与第一个实验完全一致。
结论:在创建R-TREE时,ROOT MBR是根据实时计算要素集的真实范围确定的。与元数据表中记录的范围无关。
然而,实验到此就结束了吗?好像这样轻易得出结论显得不严谨。我也认为不严谨,所以我决定打开会话跟踪,看看create spatial index到底做了些什么。经过整理,发现在确定MBR时,其过程大致是这样的。
1)在SDO_INDEX_METADATA_TABLE中插入记录,此时插入两条

2)创建一个游标,从刚刚插入的记录中查询相关数据,此时仅查询了其中一条

3)在SDO_INDEX_METADATA_TABLE删除刚刚插入的记录,仅删除其中一条

4)创建MDRT~索引表,以及M2~、M1~中间表


在后面的过程中,可知M2~表用于记录第个要素的ROWID和要素MBR、M1~表用于在M2~表的基础上生成统计值,例如图层的MBR、某个坐标维度的合计值、标准差等。
5)将每个要素的ROWID和要素MBR插入到M2~表中

6)在M2~的基础上得到统计值,并插入到M1~中

各绑定变量值为:

X与Y坐标,其范围值和上文实验一、二中得到的已经一致了。
7)用M1~中的范围构建SDO_GEOMETRY,并更新到SDO_INDEX_METADATA_TABLE表中去

至此,分析结束。在创建R-TREE时,ROOT MBR确实是根据实时计算要素集的真实范围确定的。
Oracle Spatial图层元数据坐标范围影响R-TREE索引的ROOT MBR吗?的更多相关文章
- Oracle Spatial GIS相关研究
1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...
- Oracle Spatial 中的弧段及弧相关拓扑错误
1.报告说明 此报告用于验证下列问题: ORACLE SPATIAL 0.05m的最小拓扑容差值是否可以被修改 原始数据通过ARCGIS入库数据精度是否有损失 修改ORACLE SPATIAL图层的最 ...
- SQLite R*Tree 模块测试
目录 SQLite R*Tree 模块测试 1.SQLite R*Tree 模块特性简介 2.SQLite R*Tree 模块简单测试代码 SQLite R*Tree 模块测试 相关参考: MySQL ...
- shp转oracle spatial
2010年12月1日 终于搞定了shp到oracle spatial,说下步骤和感受吧! 1 XP系统:转换工具的下载(shp2sdo.exe ):下载后把此文件复制到PATH变量包含的目录下(E: ...
- Oracle Spatial中的空间索引
转自cryolite原文 Oracle Spatial中的空间索引 Oracle Spatial可对空间数据进行R-tree索引,每个空间图层(Spatial Layer)的空间索引元信息都可以在US ...
- Oracle Spatial操作geometry方法
Oracle Spatial中SDO_GEOMETRY类型: CREATE TYPE SDO_GEOMETRY AS OBJECT( SDO_GTYPE NUMBER,--几何类型,如点线面 SDO_ ...
- C#读取Oracle Spatial的sdo_geometry
oracle的sdo_geometry中内置get_wkt和get_wkb两个方法. 以数据库表geoms为例,此表中有id和geometry两列 try { OracleConnection con ...
- Oracle spatial与arcsde 的关系
有一些同事问过我下面这些问题: 我们用了oracle spatial sdo_geometry,是不是没用arcsde? 我们到底是使用oracle spatial还是arcsde,有点懵! 执行了c ...
- Oracle Spatial中SDO_Geometry详细说明[转]
在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等 ...
随机推荐
- Alpha冲刺(8/10)——追光的人
1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...
- 线程池的使用(ThreadPoolExecutor详解)
为什么要使用线程池? 线程是一个操作系统概念.操作系统负责这个线程的创建.挂起.运行.阻塞和终结操作.而操作系统创建线程.切换线程状态.终结线程都要进行CPU调度——这是一个耗费时间和系统资源的事情. ...
- es6 添加事件监听
//定义被侦听的目标对象 }; //定义处理程序 var interceptor = { set: function (receiver, property, value) { console.log ...
- Linux cp/rm/mv 强制覆盖
一.Linux下的cp/rm/mv强制覆盖 (一).反斜杠(\)临时取消别名 [root@fz ~]# \cp filename new/filename [root@fz ~]# (二).unali ...
- LeetCode 1059. All Paths from Source Lead to Destination
原题链接在这里:https://leetcode.com/problems/all-paths-from-source-lead-to-destination/ 题目: Given the edges ...
- 2019.12.10 switch(){ case: }
if 适合判断范围 switch 适合判断某个值 两种方法: import java.util.Scanner; class Demo02 { public static void main(Stri ...
- .NET添加新项目-配置不同环境参数
添加新项目-配置不同环境参数 添加新项目后,需要对配置管理器进行设置.默认新加的项目只有debug和release 现加其他环境(dev.uat...)的配置[通过项目文件.csproj来加,拷贝其他 ...
- 11-ESP8266 SDK开发基础入门篇--软硬件定时器
https://www.cnblogs.com/yangfengwu/p/11094009.html 定时器有两种,软件定时器和硬件定时器 软件定时器就是靠里面的任务延时实现的,,这样的定时器其实延时 ...
- NVIDIA vGPU License服务器搭建详解
当配置有vGPU虚拟机发起License授权请求,授权服务器会根据License中所包含的GRID License版本,加载不同的vGPU驱动(普通驱动和专业Quodra卡驱动).目前vPC和vApp ...
- e3s10 网络管理
1. host上设置 iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE # https://www.unixtutorial.org/how-t ...