2010年4月26日星期一

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 GET_SDO_GEOM RETURN SDO_GEOMETRY DETERMINISTIC, … ) 可见,Oracle Spatial的ST_GEOMETRY事实上还是通过对SDO_GEOMETRY的包装实现的。因此,我们可以通过最简单的构造函数来构造一个ST_GEOMETRY对象: ST_GEOMETRY(geom SDO_GEOMETRY); 或者,也可以使用具体的ST_GEOMETRY类型来构造,比如用ST_POINT来构造一个点,你会发现内部Oracle Spatial还是根

2010年4月20日星期二

ArcSDE vs. oracle Spatial 4

导入数据到Oracle Spatial Oracle Spatial并没有像ArcGIS那样有一套从桌面到数据库到服务器到开发包的全方位GIS产品体系,因此向Oracle中加载数据相比用ArcGIS要麻烦得多,同时也没有那么多的数据源格式的支持。Oracle本身则提供了一个工具shp2sdo[1],可以帮助你导入Shapefile到Oracle Spatial中,这个工具的使用分三个步骤: 第一步,使用shp2sde工具生成脚本和数据: [oracle@test2 shp2sdo_linux]$ ./shp2sdo.exe shp2sdo - Shapefile(r) To Oracle Spatial Converter Version 2.15 21-May-2004 Copyright 1997,2004 Oracle Corporation For use with Oracle Spatial. Input shapefile (no extension): /home/wuyf/world/cities Shape file /home/wuyf/world/cities.

2010年4月19日星期一

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) -- 左下角和右上角 ) 有洞的多边形 SDO_GEOMETRY( 2003,-- 面,表 1 4326, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1), -- 从1开始多边形,从19开始多边形,表 2 SDO_ORDINATE_ARRAY(2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4,--外多边形,逆时针 7,5, 7,10, 10,10, 10,5, 7,5)-- 内多边形,顺时针 )

2010年4月16日星期五

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_POINT SDO_POINT_TYPE, SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, SDO_ORDINATES SDO_ORDINATE_ARRAY, MEMBER FUNCTION GET_GTYPE RETURN NUMBER DETERMINISTIC, MEMBER FUNCTION GET_DIMS RETURN NUMBER DETERMINISTIC, MEMBER FUNCTION GET_LRS_DIM RETURN NUMBER DE

2010年4月15日星期四

ArcSDE vs. Oracle Spatial 1

Oracle Spatial的出现让很多人产生这样一个想法:“Oracle对自己的数据库产品肯定是最熟悉的,Oracle Spatial的性能也肯定是最好的,相比之下ArcSDE for Oracle这个后娘养的哪天还是踹掉算了”。这话听起来有一点糙,不过好像也挺在理。就在此摇摆不定之际,一旁的微软泪流满面:“作为对Windows最熟悉的厂商我要说一句,为什么还有人用Windows竟然都不选择SQL Server而非要用天杀的Oracle!” ——打住,以上情节纯属虚构,如有雷同,纯属巧合。 书归正传,自打Oracle Spatial的出现,从开始的点线面的简单支持到栅格(Raster)、拓扑(Topology)、网络(Network)的支持;从纯粹数据库的功能到OGC Web服务的支持都能看出Oracle对Spatial模块的进取心。然而,SDO_GEOMETRY这种有点晦涩的存储方式及其空间操作方法的风格也可以看出Oracle——或许也就是它的CEO埃里森的一贯作风——强势、特立独行。 当然,不管是Oracle亲生的还是ESRI后娘养的,名分都是浮云,能更好地支持我们的GIS应用才