谈谈oracle spatial与arcsde的关系

本文详细解析了ArcSDE与Oracle Spatial的关系及其工作原理,涵盖了ArcSDE的定义、工作方式、空间数据存储方式、连接方式等内容,并探讨了Oracle Spatial的功能与两者结合的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有一些同事问过我下面这些问题:

?  我们用了oracle spatial sdo_geometry,是不是没用arcsde?

?  我们到底是使用oracle spatial还是arcsde,有点懵!

?  执行了create enterprise geodatabase是不是就表示使用了arcsde?那这个动作到底是做什么呢?

?  我们没用arcsde的服务,为什么你还说我们用了arcsde呢?

?  ……

因为问得人很多,我打算将我的理解写下来,与大家交流,以收抛砖引玉之效。

1、什么是ARCSDE

SDE的全称是spatial database engine(空间数据引擎),之所以称之为引擎,是因为所有的空间数据IO都需要通过它来管理。它属于中间件技术,位于客户端和数据库之间,其本身并不能够存储空间数据(存储是由数据库完成),它的作用可以理解为将数据库中的对象(表、视图等)抽象成上层GIS应用可以认识的概念,例如featurefeature class等。

2ARCSDE是怎么工作的

ARCSDE保存了一系统数据库对象,用于管理空间信息,这些对象统称为资料档案库(Repository)。以基于ORACLE数据库的ARCSDE为例,资料档案库包含SDE用户下的数据字典表、存储过程、以及数个.dll文件。数据字典表,用以存储要素类、要素类字段、要素类投影、要素类范围等元数据信息,而存储过程和.dll用于实现对空间数据的GIS运算和操作,例如用于计算polygon周长的方法。

3、空间数据是如何存储的

上文已经说过,ARCSDE并不能够存储空间数据,数据都是存储在RDBMS[y1] (关系型数据库)中。以矢量数据为例,它既可以以二近制形式存储为一个BLOB对象,也可以使用RDBMSARCSDE提供的矢量数据类型。

最初的时候,即ARCSDERDBMS还未提供矢量数据类型之前,所有的数据都是以序列化的二近制形式存储,在数据库里表现为一个BLOB字段。

BLOB字段的形式存储,虽然解决了存储的问题,但却没能很好地利用RDBMS的能力。例如,它不能用SQL操作[y2] 非常便捷地处理空间数据(处理BLOB需要反序列化)。为了更好地利用RDBMS的资源,从ARCSDE 9.2开始,提供了一个结构化的数据类型——ST_GEOMETRY。由于数据是结构化的,所以通过SQL查询空间数据即可了解数据内容,通过SQL即可非常便捷地对数据进行各种操作(例如更新)。这样的好处是显示易见的,它突破了ARCGIS的种种障碍限制,在特定的环境下特别是用户的数据都是简单的点线面,并且业务只有相关的编辑方面,无需SDE版本要求时,SQL操作将非常便捷直观。这些操作其实也降低了操作人员的GIS门槛,但是切记:高便利与高风险是时刻并存的

除此之外,RDBMS也纷纷推出了自定义的空间数据类型,例如ORACLESDO_GEOMETRY。它的作用与ST_GEOMETRY类似。

4、使用ARCSDE的连接方式

ARCSDE8.1之前,通过ARCSDE连接数据库是一种三层模型。从8.1之后,ArcSDE提供了两种数据联结架构,即两层和三层模型。两层模型即直连、三层模型即ARCSDE服务连接。

ARCSDE服务连接模型如下图:


    ArcSDE Server上运行着1giomgr进程和多个gsrvr进程。

giomgrArcSDE服务器管理进程,该进程一直存在,负责监听用户连接请求,分配相应的gsrvr管理进程,进行空间数据字典的维护。

gsrvr属于这样一种进程:当有客户端请求数据库连接,由giomgr分配名为gsrvr的独立进程来全面负责客户机与服务器的元数据通信。

当使用ArcSDE服务连接时,需要在ArcSDE Server安装RDBMS Client software。在此种连接模式下,客户端通过SDE服务访问数据表后,ArcSDE Server服务器端完成对数据的各种操作,再把操作结果返回客户端。

ARCSDE直连模型如下图:


    ARCSDE服务连接方式不同,gsrvr进程内嵌到客户端,不再需要服务器端ArcSDE服务。ArcSDE直连驱动和ArcSDE服务采用相同的代码构建。不同的是,ArcSDE直连驱动是一系列动态链接库dll,安装和运行于客户端应用程序的进程空间内;而ArcSDE服务是可执行程序,运行于服务器端。

当使用ArcSDE直连时,需要在客户端安装dbms client software。在此种连接模式下,通过SDE访问数据表后,将在客户端本地完成对数据的各种操作(像空间分析,编辑等)。

    直连与服务连接下比,优势表现在:

1.   直连方式较服务连接方式卸载了20%-40%的负载

2.   直连方式降低了服务器端内存的需求

3.   直连速度更快

4.   直连配置支持FAILOVER,而服务连接不支持RAC架构

5.   不需要安装SDE服务,也不需要维护SDE服务

6.   实施部署方便,切换环境只需将工具与ORACLE客户端打包即可

7.   使用操作系统认证方式连接到数据库,必须使用直连

劣势表现在:

1.   对客户端配置要求高

2.   所有的客户端都必须安装oracle客户端[y3] 

3.   数据库客户端必须是32

注意:ESRI提供直连方式后,ESRI一直推荐使用直连方式。另外,从ARCGIS 10.3之后,不再提供SDE服务(即不再提供sdeservice[y4] 工具)。

5ORACLE SPATIAL是什么

ORACLE SPATIAL提供了一套 SQL 方案和函数,用来存储、检索、更新和查询数据库中的空间要素集合。主要由几何数据类型,空间索引机制,一套操作函数,管理工具组成。

ORACLE数据库而言,实际上ORACLE SPATIAL可以全面取代ArcSDE, ArcSDE提供的能力它几乎都提供了。它除了提供了数据类型SDO_GEOMETRY,还提供了大量的GIS应用API,还实现了渲染与可视化,只是在实现方式上,功能的丰富性、稳定性上与ARCSDE有所不同。

6Oracle Spatial+ArcSDE是一种怎样的组合

当前,我们很多项目的确是同时使用了Oracle SpatialArcSDE。按照第5个问题的回答,我们有一套东西就够了,为什么这里它们同时都被使用了?

Oracle Spatial+ArcSDE这种应用中,Oracle Spatial提供矢量数据类型,即SDO_GEOMETRY,而ArcSDE负责将使用SDO_GEOMETRY数据类型的表在SDE Repository中注册,只有注册后,应用层的ArcMapArcEngine才能认识它。因为对于ArcMapArcEngine等应用程序来讲,它没有数据库中表的概念,它只有geodatabase中定义的featurefeature classfeature dataset这些概念。换句话说,之所以要用SDE Repository,是因为我们的项目是基于ArcEngine开发的。如果项目不基于ArcEngine开发,而是使用ORACLE SPATIAL提供的SDK,那么我们完全可以不用SDE Repository,也就完全不需要使用ARCSDE,而是全面使用ORACLE SPATIAL来实现各种GIS操作、渲染与可视化。

7create enterprise geodatabase到底在做什么

ARCGIS 10.0(包括10.0)之前,在安装完ARCSDE软件之后,会跳转到post Installation界面。在这里,可以选择创建用户、创建表空间、安装SDE Repository、创建SDE服务等。如下图:

[y5] 

10.1之后,不再需要安装ARCSDE软件,创建SDE用户、SDE表空间、安装SDE Repository都由create enterprise geodatabase功能完成。与10.1之前相比,默认不再创建SDE服务,SDE服务需要用sdeservice工具手动创建[y6] 

8、没有SDE Repository,通过arcmap为何仍然能够看到feature class

ARCMAP 10.1开始,如果一个带SDO_GEOMETRY数据类型的表未在SDE Repository中注册,甚至没有SDE Repository,也是可以浏览的。此时ARCMAP会根据矢量数据类型,去读取ORACLE SPATIALRepository(元数据表),即user_sdo_geom_metadata,只要能够获取到该图层在oracle spatial中的元数据信息,也可以在arcmap中浏览。但此时也仅限于浏览,因为没有SDE Repositorysdo geodatabase模型的高级功能,如拓扑构建、版本管理等特性将无法使用。

9Oracle Spatial+ArcSDE算不算用了ARCSDE

    算,只要使用SDE Repository就等于说使用了ArcSDE

 [y1]实际上并不限于RDBMSARCSDE也支持非关系型数据库和HADOOP。但现在只谈它与ORACLE SPATIAL的关系,因此,此处说RDBMS

 [y2]所谓SQL操作,就是与我们COMArcGISEngine对比就是我们不需要使用ArcGIS接口对数据进行操作,我们直接使用SQL语句的增删改对空间数据进行操作

 [y3]或其它数据库连接驱动程序

 [y4]ARCGIS 10.1开始,ESRI官方推荐以直连方式连接SDE,因此在SDE安装时不再自动安装SDE服务,需要手动用sdeservice工具来创建服务

 [y5]当选择“complete”时,创建用户、创建表空间、安装SDE Repository、创建SDE服务四个步骤均会执行

 [y6]ARCGIS 10.3不再提供该工具

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31340387/viewspace-2124418/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31340387/viewspace-2124418/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值