Oracle spatial与arcsde 的关系
有一些同事问过我下面这些问题:
- 我们用了oracle spatial sdo_geometry,是不是没用arcsde?
- 我们到底是使用oracle spatial还是arcsde,有点懵!
- 执行了create enterprise geodatabase是不是就表示使用了arcsde?那这个动作到底是做什么呢?
- 我们没用arcsde的服务,为什么你还说我们用了arcsde呢?
- ……
因为问得人很多,我打算将我的理解写下来,与大家交流,以收抛砖引玉之效。
1、什么是ARCSDE
SDE的全称是spatial database engine(空间数据引擎),之所以称之为引擎,是因为所有的空间数据IO都需要通过它来管理。它属于中间件技术,位于客户端和数据库之间,其本身并不能够存储空间数据(存储是由数据库完成),它的作用可以理解为将数据库中的对象(表、视图等)抽象成上层GIS应用可以认识的概念,例如feature、feature class等。

2、ARCSDE是怎么工作的
ARCSDE保存了一系统数据库对象,用于管理空间信息,这些对象统称为资料档案库(Repository)。以基于ORACLE数据库的ARCSDE为例,资料档案库包含SDE用户下的数据字典表、存储过程、以及数个.dll文件。数据字典表,用以存储要素类、要素类字段、要素类投影、要素类范围等元数据信息,而存储过程和.dll用于实现对空间数据的GIS运算和操作,例如用于计算polygon周长的方法。
3、空间数据是如何存储的
上文已经说过,ARCSDE并不能够存储空间数据,数据都是存储在RDBMS(关系型数据库)(实际上并不限于RDBMS,ARCSDE也支持非关系型数据库和HADOOP。但现在只谈它与ORACLE SPATIAL的关系,因此,此处说RDBMS)中。以矢量数据为例,它既可以以二近制形式存储为一个BLOB对象,也可以使用RDBMS或ARCSDE提供的矢量数据类型。
最初的时候,即ARCSDE和RDBMS还未提供矢量数据类型之前,所有的数据都是以序列化的二近制形式存储,在数据库里表现为一个BLOB字段。
以BLOB字段的形式存储,虽然解决了存储的问题,但却没能很好地利用RDBMS的能力。例如,它不能用SQL操作(所谓SQL操作,就是我们直接使用SQL语句的增删改对空间数据进行操作,而不是非得用ArcEngine的接口函数对数据进行操作)非常便捷地处理空间数据(处理BLOB需要反序列化)。为了更好地利用RDBMS的资源,从ARCSDE 9.2开始,提供了一个结构化的数据类型——ST_GEOMETRY。由于数据是结构化的,所以通过SQL查询空间数据即可了解数据内容,通过SQL即可非常便捷地对数据进行各种操作(例如更新)。这样的好处是显示易见的,它突破了ARCGIS的种种障碍限制,在特定的环境下特别是用户的数据都是简单的点线面,并且业务只有相关的编辑方面,无需SDE版本要求时,SQL操作将非常便捷直观。这些操作其实也降低了操作人员的GIS门槛,但是切记:高便利与高风险是时刻并存的。
除此之外,RDBMS也纷纷推出了自定义的空间数据类型,例如ORACLE的SDO_GEOMETRY。它的作用与ST_GEOMETRY类似。
4、使用ARCSDE的连接方式
在ARCSDE8.1之前,通过ARCSDE连接数据库是一种三层模型。从8.1之后,ArcSDE提供了两种数据联结架构,即两层和三层模型。两层模型即直连、三层模型即ARCSDE服务连接。
ARCSDE服务连接模型如下图:

在ArcSDE Server上运行着1个giomgr进程和多个gsrvr进程。
giomgr即ArcSDE服务器管理进程,该进程一直存在,负责监听用户连接请求,分配相应的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访问数据表后,将在客户端本地完成对数据的各种操作(像空间分析,编辑等)。
直连与服务连接下比,优势表现在:
- 直连方式较服务连接方式卸载了20%-40%的负载
- 直连方式降低了服务器端内存的需求
- 直连速度更快
- 直连配置支持FAILOVER,而服务连接不支持RAC架构
- 不需要安装SDE服务,也不需要维护SDE服务
- 实施部署方便,切换环境只需将工具与ORACLE客户端打包即可
- 使用操作系统认证方式连接到数据库,必须使用直连
劣势表现在:
- 对客户端配置要求高
- 所有的客户端都必须安装oracle客户端(或其它数据库连接驱动程序)
- 数据库客户端必须是32位
注意:自ESRI提供直连方式后,ESRI一直推荐使用直连方式。另外,从ARCGIS 10.3之后,不再提供SDE服务(即不再提供sdeservice工具(从ARCGIS 10.1开始,ESRI官方推荐以直连方式连接SDE,因此在SDE安装时不再自动安装SDE服务,需要手动用sdeservice工具来创建服务 ))。
5、ORACLE SPATIAL是什么
ORACLE SPATIAL提供了一套 SQL 方案和函数,用来存储、检索、更新和查询数据库中的空间要素集合。主要由几何数据类型,空间索引机制,一套操作函数,管理工具组成。
对ORACLE数据库而言,实际上ORACLE SPATIAL可以全面取代ArcSDE, ArcSDE提供的能力它几乎都提供了。它除了提供了数据类型SDO_GEOMETRY,还提供了大量的GIS应用API,还实现了渲染与可视化,只是在实现方式上,功能的丰富性、稳定性上与ARCSDE有所不同。
6、Oracle Spatial+ArcSDE是一种怎样的组合
当前,我们很多项目的确是同时使用了Oracle Spatial和ArcSDE。按照第5个问题的回答,我们有一套东西就够了,为什么这里它们同时都被使用了?
在Oracle Spatial+ArcSDE这种应用中,Oracle Spatial提供矢量数据类型,即SDO_GEOMETRY,而ArcSDE负责将使用SDO_GEOMETRY数据类型的表在SDE Repository中注册,只有注册后,应用层的ArcMap、ArcEngine才能认识它。因为对于ArcMap、ArcEngine等应用程序来讲,它没有数据库中表的概念,它只有geodatabase中定义的feature、feature class、feature dataset这些概念。换句话说,之所以要用SDE Repository,是因为我们的项目是基于ArcEngine开发的。如果项目不基于ArcEngine开发,而是使用ORACLE SPATIAL提供的SDK,那么我们完全可以不用SDE Repository,也就完全不需要使用ARCSDE,而是全面使用ORACLE SPATIAL来实现各种GIS操作、渲染与可视化。
7、create enterprise geodatabase到底在做什么
在ARCGIS 10.0(包括10.0)之前,在安装完ARCSDE软件之后,会跳转到post Installation界面。在这里,可以选择创建用户、创建表空间、安装SDE Repository、创建SDE服务等。如下图:

(当选择“complete”时,创建用户、创建表空间、安装SDE Repository、创建SDE服务四个步骤均会执行)
10.1之后,不再需要安装ARCSDE软件,创建SDE用户、SDE表空间、安装SDE Repository都由create enterprise geodatabase功能完成。与10.1之前相比,默认不再创建SDE服务,SDE服务需要用sdeservice工具手动创建(ARCGIS 10.3不再提供该工具)。
8、没有SDE Repository,通过arcmap为何仍然能够看到feature class
从ARCMAP 10.1开始,如果一个带SDO_GEOMETRY数据类型的表未在SDE Repository中注册,甚至没有SDE Repository,也是可以浏览的。此时ARCMAP会根据矢量数据类型,去读取ORACLE SPATIAL的Repository(元数据表),即user_sdo_geom_metadata,只要能够获取到该图层在oracle spatial中的元数据信息,也可以在arcmap中浏览。但此时也仅限于浏览,因为没有SDE Repository,sdo geodatabase模型的高级功能,如拓扑构建、版本管理等特性将无法使用。
9、Oracle Spatial+ArcSDE算不算用了ARCSDE
算,只要使用SDE Repository就等于说使用了ArcSDE。
Oracle spatial与arcsde 的关系的更多相关文章
- 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中SDO_Geometry详细说明[转]
在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等 ...
- 【从翻译mos文章】oracle linux 和外部存储系统 关系
oracle linux 和外部存储系统 关系 参考原始: Oracle Linux and External Storage Systems (Doc ID 753050.1) 范围: Linux ...
- shp转oracle spatial
2010年12月1日 终于搞定了shp到oracle spatial,说下步骤和感受吧! 1 XP系统:转换工具的下载(shp2sdo.exe ):下载后把此文件复制到PATH变量包含的目录下(E: ...
- Oracle Spatial中SDO_Geometry说明
Oracle Spatial中SDO_Geometry说明 在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及 ...
- Oracle spatial抽稀函数(SDO_UTIL.SIMPLIFY)
在使用Oracle spatial做空间查询和展示时,经常会遇到展示或者查询过慢,这时候我可以通过空间数据抽稀来优化查询展示效率. 在Oracle spatial中的抽稀函数为:SDO_UTIL.SI ...
- Oracle spatial 空间修正函数(SDO_UTIL.RECTIFY_GEOMETRY)
Oracle spatial有个空间修正函数SDO_UTIL.RECTIFY_GEOMETRY,它可以修复以下可能:a.重复节点 b.自相交 c.坐标串朝向不正确. 该函数的构造函数格式: SDO_U ...
- Oracle Spatial GIS相关研究
1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...
随机推荐
- Alpha冲刺(8/10)——2019.5.1
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(8/10)--2019.5.1 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万 ...
- Keil MDK5生成 .bin文件的简单教程(图文)
以下参考https://blog.csdn.net/u014563989/article/details/51127519,同时自己实测. 1.按如图步骤做,主要是要找到fromelf.exe的路径: ...
- 【NOIP2015】斗地主 D1 T3 及 增强版 (送命题)
恶心送命模拟题 暴搜顺子,DP预处理剩下的. 由于官方数据太水,很多情况没有讨论的都能过普通版本,想要测试自己代码正确性的同学们可以交交这道题,有很多dalao给出了hack数据 : Luogu P2 ...
- BZOJ 5082: 弗拉格 矩阵乘法
如果单点而不是求 sigma 的话还是比较好办的. 遇到这种前缀和相减的矩阵乘法可以增设一个 0 使得后面的能先加到前面,然后再算. 这样的话可以使的最后算出的是前缀和相加的形式. code: #in ...
- 使用gitstats分析git 仓库代码
gitstats 是一个很不错的git 代码提交分析工具,可以帮助我们生成图表统计结果 工具文档信息 gitstats http://gitstats.sourceforge.net/ 安装 使用ce ...
- sdcf day1 qwq比赛题解
目录 写在前面 A 链接 思路 代码 B 链接 翻译 思路 代码 C 链接 翻译 思路 代码 写在前面 来到夏令营的第一场比赛,全是水题(第一题除外,不过是原题还是之前做过的,而且是并查集的果题,咕咕 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn 题解
P2701 [USACO5.3]巨大的牛棚Big Barn 题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他 ...
- 【luoguP2999】 [USACO10NOV]巧克力牛奶Chocolate Milk
题目链接 考虑每条路径都经过的一个点,它可以到达每个出度为零点(终点),且每个入读为零点(起点)都能到达它, 拓扑排序记录下每个结点能到达的出度为零点的个数和沿反边能到达的入读为零点个数,判断是否等于 ...
- C博客作业
1.你对网络专业或者计算机专业了解是怎样? 信息化是国企的一个大趋势,目前正是红火的时候. - 网络是信息化必不可少的的基础和平台,随着信息化的进步,网络也必将水涨船高. - 我认为网络方向主要学的是 ...
- MAKEFILE编写学习--1
makefile是在编译中大型程序中使用的自动化编译工具make依赖的指令文件.这样可以使得程序的编译更加便捷快速. makefile的一般规则如下: target ... : prerequisit ...