2010年5月28日星期五

ArcSDE vs. Oracle Spatial 8

I. 空间索引 对于空间数据中几何对象的索引显然不能套用数据库现有的索引类型,其不确定的数据结构和数据操作方法使现有的索引并不能适用,因此无论是Oracle Spatial还是ArcSDE都是采用域索引(Domain Index[1])来实现,简单地说就是创建一个数据库中原来没有的新的索引类型。 · Oracle Spatial 1. 索引类型SPATIAL_INDEX Oracle Spatial中的空间索引极其重要,没建空间索引的空间表就像断了腿的兔子,不但跑不起来,甚至可能比乌龟还慢。 让我们从索引的创建入手来看一下Oracle Spatial的空间索引机制: SQL> create index idx_test_index_geom on spatial.test_index(geom) indextype is mdsys.spatial_index; 索引已创建。 如果你的数据是用shp2sdo等工具导入的,那么直接就可以创建索引;如果是自己创建的空间表,那么必然会遇到ORA-13203错误,因为Oracle Spatial在创建空间索引时会读取USER_SDO_GEOM_

2010年5月14日星期五

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; SDE.ST_GEOMETRY('POINT(11)',0)(ENTITY, NUMPTS, MINX, MINY, MAXX, MAXY, MINZ, MAXZ, MINM, MAXM, AREA, LEN, SRID, POINTS) ------------------------------------------------------------------------------------------------------------------------ S