
《ArcSDE vs. Oracle Spatial》
牛魔王中王
牛魔王这个名字竟然被用了
展开
-
ArcSDE vs. Oracle Spatial 12
· 空间索引的性能 1. 空间索引的用处 对于空间数据库进行空间查询的操作一般都有两个阶段,对于Oracle Spatial而言,一个空间查询分为2个步骤,一个称为主过滤(Primary Filter),另外一个称为次过滤(Secondary Filter)。主过滤通过矩形的MBR相交从海量的数据中首先过滤出可能符合空间查询的一小部分数据,然后再用次过滤中具体的空间关系算法来判断这个小的结果集中到底哪些是满足空间关系的。如图 12,在主过滤的过程中,空间索引会被使用到。 图 12 Oracle Spat原创 2010-06-08 17:25:00 · 1653 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 5
基于SDO_GEOMETRY的ST_GEOMETRY Oracle Spatial虽然使用了SDO_GEOMETRY类型作为几何对象的存储,不过它也提供了另外的一种类型ST_GEOMETRY,同时在此基础上还提供了一些符合OGC Simple Features Access规范的操作。 首先让我们来看一下这个ST_GEOMETRY的定义: CREATE OR REPLACE TYPE ST_GEOMETRY AS OBJECT ( GEOM SDO_GEOMETRY, MEMBER FUNCTION GE原创 2010-04-26 10:30:00 · 1804 阅读 · 0 评论 -
《ArcSDE vs. Oracle Spatial》 PDF
http://cid-c71882196b68eee5.office.live.com/embedicon.aspx/%e5%85%ac%e5%bc%80%e5%85%b1%e4%ba%ab%e6%96%87%e6%a1%a3/ArcSDE%20vs.%20Oracle%20Spatial.pdf原创 2010-06-13 11:10:00 · 2442 阅读 · 2 评论 -
ArcSDE vs. Oracle Spatial 14
· ArcSDE ArcSDE中有以下的空间关系判断函数: 空间操作 描述 ST_EnvIntersects 矩形的边界满足ST_Intersects关系 ST_Intersects 任意部分有相交,等价于判断空间关系的DE-9IM[1]字符串表达是否是以下之一: T******** *T******* ***T***** ****T**** ST_Contains T*****FF* ST_Crosses T*T****** 0******** ST_Disj原创 2010-06-09 16:54:00 · 1315 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 6
· ArcSDE 从ArcSDE的Post Installation就可以看到,ArcSDE支持多种数据存储方式,不但支持ESRI自身的ST_GEOMETRY,也支持BLOB和SDO_GEOMETRY类型。 图 3 ArcSDE支持的存储格式 1. ST_GEOMETRY ArcSDE中的ST_GEOMETRY和Oracle Spatial中基于SDO_GEOMETRY的ST_GEOMETRY完全是不相干的两个东西。首先让我们来看一下ArcSDE中ST_GEOMETRY类型的定义: CREATE OR R原创 2010-05-04 16:31:00 · 2096 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 2
I. 几何对象 · Oracle Spatial 1. SDO_GEOMETRY Oracle Spatial在MDSYS模式下定义了一系列几何类型、函数来支持空间数据的存储和使用,最为人耳熟能详的就是SDO_GEOMETRY这种类型——当然,ArcSDE也可以使用这种类型进行存储。让我们首先来看一下SDO_GEOMETRY的定义: CREATE OR REPLACE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_原创 2010-04-16 14:06:00 · 2869 阅读 · 1 评论 -
ArcSDE vs. Oracle Spatial 17
I. 其它 · 还没有涉及的话题 关于Oracle Spatial的GeoRaster支持本文没做研究。另外,Oracle Spatial中现在还支持一些更“GIS”的功能,比如网络、拓扑;还有一些更“Web”的功能,比如Web Service的支持。对这些功能我的兴趣实在不大,由于精力有限暂时也就不再研究了。事实上从第III章开始,后面的比较都有些“多余”,因为在实际应用中,如果采用ArcSDE和ArcGIS的产品,很少会直接在数据库服务器上执行这些空间关系运算、几何处理等操作,取而代之的是在客户端的Ar原创 2010-06-13 10:19:00 · 1581 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 13
I. 空间关系运算 以上两个章节是必不可少的基础,涉及到空间数据在数据库中的存储和通过索引加速空间数据的获取。从这句话也可以看出,后续的章节并不是必须的,也就是说某些基于空间数据的应用可能并不需要诸如空间关系判断、几何对象处理等功能。这并不是说这些功能就用不着了,而是这些功能并不一定需要在数据库端执行。比如基于ArcSDE,这些空间算法和功能在ArcGIS的产品线中无处不在,很多时候都不会把这些功能放到数据库上去。 · Oracle Spatial 在Oracle Spatial中,主要的空间关系操作在下表原创 2010-06-08 17:28:00 · 1870 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 10
· ArcSDE 1. 索引类型ST_SPATIAL_INDEX 这里我们首先看一下ArcSDE的索引类型ST_SPATIAL_INDEX的定义: CREATE OR REPLACE INDEXTYPE "SDE"."ST_SPATIAL_INDEX" FOR "SDE"."ST_CONTAINS" ("SDE"."ST_GEOMETRY", "SDE"."ST_GEOMETRY"), "SDE"."ST_CROSSES" ("SDE"."ST_GEOMETRY", "SDE"."ST_GEOMETRY"原创 2010-06-05 13:15:00 · 2481 阅读 · 1 评论 -
ArcSDE vs. Oracle Spatial 3
1. 常见几何对象的构造 对于SDO_GEOMETRY这种定义晦涩的类型,最好是搞几个例子来对照一下,好在《Oracle Spatial Developer’s Guide》里提供了几个简单的Example,还配上了很好看的插图,在这里一并引用一下: 矩形 SDO_GEOMETRY( 2003,-- 面,表 1 4326, NULL, SDO_ELEM_INFO_ARRAY(1,1003,3),-- 矩形,表 2 SDO_ORDINATE_ARRAY(1,1, 5,7) -- 左下角和右上角 )原创 2010-04-19 14:12:00 · 1552 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 1
Oracle Spatial的出现让很多人产生这样一个想法:“Oracle对自己的数据库产品肯定是最熟悉的,Oracle Spatial的性能也肯定是最好的,相比之下ArcSDE for Oracle这个后娘养的哪天还是踹掉算了”。这话听起来有一点糙,不过好像也挺在理。就在此摇摆不定之际,一旁的微软泪流满面:“作为对Windows最熟悉的厂商我要说一句,为什么还有人用Windows竟然都不选择SQL Server而非要用天杀的Oracle!” ——打住,以上情节纯属虚构,如有雷同,纯属巧合。 书归正传,自打原创 2010-04-15 16:31:00 · 2193 阅读 · 3 评论 -
ArcSDE vs. Oracle Spatial 18
一些补充测试结果: 1. 几何对象的存储空间 为了测试Oracle Spatial和ArcSDE在相对真实的环境中几何对象存储空间的大小,测试分别使用了2个包含约1亿个要素的线数据和面数据进行。其中线数据只包含几何信息,面数据还包含一些属性信息。大部分线数据只包含2个节点,而面数据一般都是几十个节点以上 对这2个数据分别进行了存储空间的比较: 数据 存储类型 空间数据表存储大小(G) 线数据 ST_GEOMETRY 14.72 SDO_ GEOMETRY 16.51 面数据原创 2010-06-13 10:51:00 · 1773 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 11
1. 格网索引的创建和调整 ArcSDE提供了最多3级的空间索引,如何选择空间索引的层级、格网的网格大小设置多少合适等都关系到空间数据的性能。这里我们通过一个简单的Polygon图层入手,探讨一些格网空间索引的性能影响因素。 首先我们在ArcSDE中准备一个WGS84的面层,名为“TESTGRID”。在这个面层上我们添加2个要素,一个较小,一个较大,如图 10所示。为了提供一些参考信息,图中还将WGS84坐标范围按照30度的尺寸进行了分割,显示在这2个要素之下。 图 10 ArcSDE中有2个要素的面层原创 2010-06-07 10:33:00 · 1804 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 8
I. 空间索引 对于空间数据中几何对象的索引显然不能套用数据库现有的索引类型,其不确定的数据结构和数据操作方法使现有的索引并不能适用,因此无论是Oracle Spatial还是ArcSDE都是采用域索引(Domain Index[1])来实现,简单地说就是创建一个数据库中原来没有的新的索引类型。 · Oracle Spatial 1. 索引类型SPATIAL_INDEX Oracle Spatial中的空间索引极其重要,没建空间索引的空间表就像断了腿的兔子,不但跑不起来,甚至可能比乌龟还慢。 让我们从索引的原创 2010-05-28 16:12:00 · 2207 阅读 · 0 评论 -
ArcSDE vs. oracle Spatial 4
导入数据到Oracle Spatial Oracle Spatial并没有像ArcGIS那样有一套从桌面到数据库到服务器到开发包的全方位GIS产品体系,因此向Oracle中加载数据相比用ArcGIS要麻烦得多,同时也没有那么多的数据源格式的支持。Oracle本身则提供了一个工具shp2sdo[1],可以帮助你导入Shapefile到Oracle Spatial中,这个工具的使用分三个步骤: 第一步,使用shp2sde工具生成脚本和数据: [oracle@test2 shp2sdo_linux]$ ./shp原创 2010-04-20 10:59:00 · 2291 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 7
常见几何对象的构造 介绍ESRI的ST_GEOMETRY的几何对象构造方法比Oracle Spatial就轻松多了,我们已经知道ST_GEOMETRY的各个子类型中的构造函数构造几何对象时都会首根据参数拼装成WKT格式的字符串,然后调用ST_SHAPELIB链接库转化到二进制的几何对象返回,那相对更通用的方法就是直接使用ST_GEOMETRY的构造函数,给一个WKT格式的字符串作为初始化参数就可以了: SQL> select sde.st_geometry('POINT(1 1)',0) from dual原创 2010-05-14 17:21:00 · 1420 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 15
I. 几何处理 · 缓冲分析 Oracle Spatial中缓冲分析使用SDO_GEOM.SDO_BUFFER函数实现,下面是SDO_GEOM包中SDO_BUFFER函数的原型: function sdo_buffer(geom IN MDSYS.SDO_GEOMETRY, dist IN NUMBER, tol IN NUMBER, params IN VARCHAR2) return MDSYS.SDO_GEOMETRY DETERMINISTIC; 这里的dist为缓冲距离;tol为容差值;param原创 2010-06-10 14:03:00 · 3407 阅读 · 3 评论 -
ArcSDE vs. Oracle Spatial 16
I. 线性参考 · Oracle Spatial 1. 创建线性参考的空间对象 图 15 一个线性参考空间对象的例子 对于如图 15的例子,Oracle Spatial中需要通过如下的SQL语句进行创建: SQL> select SDO_GEOMETRY(3302, NULL, NULL,SDO_ELEM_INFO_ARRAY(1,2,1),SDO_ORDINATE_ARRAY(5,10,0, 20,5,NULL, 35,10,NULL, 55,10,100)) shape from dual; SHA原创 2010-06-12 22:53:00 · 1823 阅读 · 0 评论 -
ArcSDE vs. Oracle Spatial 9
1. R树空间索引 自然界中的几何对象都是奇形怪状的,对这样的数据进行管理是一件很头疼的事情。因此,GIS的工程师们化繁为简,一种方法就是把几何对象的边界范围拿出来作为一个检索的依据(几何对象肯定在它内部),这是一个矩形的范围,再对它进行管理就方便多了。在Oracle Spatial中,基于R树的空间索引采用的就是这种方法(这也是推荐的索引算法),这个矩形叫MBR:Minimum Bounding Rectangle。 图 4 Oracle Spatial中几何对象的MBR 在Oracle Spatial原创 2010-06-05 13:07:00 · 1928 阅读 · 5 评论