一、什么是SDE? 从空间数据管理的角度来看,SDE可看成是一个连续的空间数据模型,借助这一模型,我们可将空间数据加入到关系数据库管理系统(RDBMS)中去。 SDE融入RDBMS后,提供了对空间、非空间数据进行高效率操作的数据库接口。由于SDE采用的是客户/服务器(Client/Server)体系结构,大量用户可同时针对同一数据进行操作。 SDE提供了应用程序接口(API),开发人员可将空间数据检索和分析功能集成到他们的应用工程中去。例如房地产应用可返回用城市或邮政编码检索的房屋列表及描述。用SDE,该应用可包含空间信息,只要将房屋的位置、街道路网以及学校和商业区等特定区域位置存放到数据库中即可。有了这些信息,房地产代理商就能拿到譬如位于某座房屋一到二公里范围内的学校及商店的位置列表,得到这一区域的图形信息,打印输出街道、公共建筑和可用房屋的位置图等。 二、SDE如何工作? SDE的体系结构如下图所示。 下图中,客户端应用是最终用户运行的软件,它可以是ArcView、MapObjects或ARC/INFO的应用,也可以是用户为某一特定工程开发的应用。与客户端应用结合的是SDE客户库(client library),这是一个程序设计接口,用于处理客户端应用提出的请求。
在服务器端,有SDE服务器处理程序、关系数据库管理系统和实际的数据。服务器在本地执行所有的空间搜索和数据提取工作,它仅将满足搜索条件的数据在服务器端缓冲存放并发回到客户端。缓冲处理收集大块的数据,然后将整个缓冲区中的数据发往客户端应用,而不是一次只发一条记录。在服务器端处理并缓冲的方法大大提高了效率,并使网上荷载大大降低。这在应用操纵数据库中成百上千万的记录时变得至关重要。 SDE采用协作处理方式,即处理既可在SDE客户库一端也可在SDE服务器一端,取决于具体的处理在哪一端更快。有的功能不需要与服务器通讯。象多边形叠加和分割这类主要耗费CPU资源的任务,由客户库来完成最好,这样可避免大量的网上操作。 所有的服务器任务都是在SDE服务器所在的平台上完成的。而客户端应用则可运行于多种不同的平台和环境,去访问同一个SDE服务器和数据库。 三、什么人与SDE打交道? 有三类人跟SDE打交道,即最终用户、应用开发人员和数据库管理员。 * 数据库管理员 数据库管理员负责安装SDE。视应用开发的需要,可能还要安装ESRI其它的软件,如ArcView、MapObjects等。将空间数据加载到SDE中也是数据库管理员的任务。数据库管理员还负责配置SDE和RDBMS,以优化其特性。SDE的许可证(License)管理设置也由数据库管理员来完成。 * 应用开发人员 尽管ArcView、ARC/INFO能直接使用SDE的数据,但还是可能要开发特定功能和界面的SDE应用。ArcView的程序设计语言Avenue可用于开发用户感兴趣的界面和特定的应用,也可方便地访问SDE。你也可以用Visual Basic 或Visual C++来开发MapObjects的SDE应用。SDE的CAD客户端,可将CAD数据存入到SDE数据库中。SDE提供了强大的C语言API接口,用它可以操纵SDE的全部功能。 * 最终用户 最终用户应是整个应用的主体,SDE的管理员和应用开发人员都将根据最终用户的需求和实际将如何使用SDE来确定如何配置、调试和开发。 四、SDE数据模型 SDE软件采用连续的数据模型。你可将整个城市的宗地数据放到SDE一个连续的层(Layer)中。每一个宗地地块作为一个完整的多边形存放,它只需一次磁盘访问即可快速提取出来。 SDE为数据库中各层(Layer)的所有要素都建立了索引。SDE建空间索引是将层从逻辑上分成一个个小块,称为“cell”,层中的要素则分解到各cell中加以描述,并将此描述信息写到索引表中。落到多个cell上的要素,将在每个cell对应的索引记录中加以描述。没有数据的cell不包括在索引表中。 五、SDE如何存储和组织地理要素 SDE存储和组织数据库中的空间要素的方法,是将空间数据类型加到关系数据库中。SDE并不改变和影响现有的数据库或应用。它只是在现有的数据表中加入图形数据项(Shape column),供软件管理和访问与其关联的空间数据。SDE将地理数据和空间索引放在不同的数据表中,通过关键项将其相联。 将图形数据项加到一个商业数据库表后,我们称该表为空间可用的(spatially enabled)。SDE通过将信息存入层表(LAYERS table)来管理空间可用表。层表帮助管理商业表和空间数据之间的连接。 对空间可用表,我们可象通常那样对表中数据进行查询、合并,也可以进行图到属性或属性到图的查询。 例如,我们可以: 1、返回以某一选中的地块为中心20公里半径范围内的所有地块。 2、返回该范围内所有用地的拥有者的名单及地址。 3、返回某人,譬如张三,所拥有的所有用地及其空间分布。 六、SDE如何表示地理要素 地理要素可以是自然的(如:河流、植被等)、自然要素的人为子集(如:用地范围、行政区域等)或人造设施(如:道路、管线、建筑等)等。SDE中的地理要素由其属性和几何形状---点、线或面组成。SDE也允许“空( Nil) Shape”。“空Shape”没有几何形状,但有属性。 点:定义离散的、无面积或长度的地理要素,如:大比例尺地图上的水井、电线杆,以及较小比例尺地图上的建筑甚至城市等。点Shape可有一个或多个点。含多个点的shape称为多点shape,多点shape表示一组不相连的坐标点。 线:表示诸如街道、河流、等高线等地理要素。SDE支持两种类型的线性shape:简单线(Simple lines)和线(lines)。 简单线 是形成一个shape的一组离散的、不相交的线的集合。简单线可用于表示带分支的河流或街道。简单线也能有几个部分以表示不连续的shapes,如:有的部分在地表以下的河流的地表部分,如下图所示。
线 是象公共汽车线路那样的图形,该图形有自我交叉或重复。 面(或多边形):是一组封闭的图形。如:国家、地区、土地利用情况、土壤类型等。面可以是简单的多边形或带岛的多边形。 |
七、SDE如何存放图形(Shapes)
SDE用X,Y坐标存放图形。
点___单一(X,Y)坐标记录;
线___有序的一组(X,Y)坐标记录;
面___一组起始结点和终止结点相同的线段对应的(X,Y)坐标记录。
SDE 还允许在X、Y坐标上加Z值。Z值用来表示X、Y点处对应的高度或深度。因此,SDE的图形可以是二维的(X,Y),也可以是三维的(X,Y,Z)。SDE对每一种类型的图形都有一组合法性检查规则,用以在将该图形存入RDBMS之前,检验其几何正确性。
八、SDE如何处理度量(measures)
度量表示沿着一地理要素上某些给定点处的距离、时间、地址或其它事件。
除了空图形(Nil shape)外,所有的图形类型都可以加上度量值。度量值与图形坐标系统无关。尽管许多应用中线上的度量值用以表示逐步增加的线性距离,但事实上度量值可以是随机递增或递减的,也可以是常量。
九、SDE注记
对SDE数据模型而言,注记被看成与图上的要素或坐标相关联的文字(串),是要素属性,被存于数据库中与其相关的一个或多个属性表中。与图上地理要素或坐标无关的文字、图形,如地图标题、比例尺、指北针等,SDE不将其存入数据库。
十、SDE应用开发
从应用开发的角度看,SDE是开发者开发应用系统的工具。ESRI的ArcView GIS、MapObjects、ARC/INFO以及SDE CAD客户端等产品都可以作为SDE的客户端。应用接口程序设计可以选用C、C++、Visual Basic或Avenue等开发环境。本节将简要地谈及在几种开发环境下,SDE的应用开发。
1、使用C API
C API(Application Programming Interface)是为那些要访问SDE软件功能的开发人员提供的。C API提供SDE所有的能力,是所有象ArcView、MapObjects这样的SDE客户端软件访问SDE的基础。SDE对数据的访问,是基于结构化查询语言SQL中定义的标准指针模式。
2、使用ArcView
ArcView现在具有数据库访问扩展功能,可用于按通常的方法访问数据库,包括SDE。它这种数据库扩展功能支持数据库数据的显示、查询和分析。如果数据库有空间数据___譬如SDE数据库,我们可以用数据库访问功能建立数据库专题(Theme)或表(Table)。
一般而言,要读取SDE数据,需要进行以下步骤:
* 连接SDE数据库
* 定义SQL查询(QueryDef)
* 执行查询以提取记录(RecordSet)
* 循环访问记录集合中的数据值
数据库专题类似于其它的ArcView专题,允许你显示和操纵空间数据。你也可以用表文档(Table document)显示所提取的记录集合。
3、使用MapObjects
MapObjects 是一个开发工具箱,其中包含了一个组件集合。这是一个ActiveX控件,其中有多于35个的OLE对象可用。开发人员可用任何支持ActiveX的程序设计环境,如Visual Basic、Visual C++、Delphi和PowerBuilder等进行快速的开发。MapObjects可以将SDE的Layers、shape文件、coverage、image等数据组合使用,还可通过ODBC(开放数据库连接)使用任意的表格数据库数据。
4、使用SDE CAD Client
SDE CAD Client是SDE用于存储、提取CAD数据的接口。SDE CAD Client有一个易于使用的CAD接口,它使得Microstation和Auto CAD可作为SDE的客户端存储、提取并修改CAD实体或SDE数据库中的几何要素。SDE允许将CAD实体存为一个无逢的层(Layer),而不必将其分块。
一个CAD对象在SDE数据库中既可表示为CAD实体也可表示为几何要素。几何要素由SDE CAD Client自动生成并管理。当CAD用户访问SDE数据库时,SDE CAD Client提取CAD对象。实际的CAD实体只能由SDE CAD Client读取。当非CAD Client查询数据库时,返回的是数据的几何要素。这使得CAD数据可为其它的SDE客户端,如ArcView、MapObjects和ARC/INFO等使用。
十一、SDE3.0新功能
最近,ESRI推出了SDE的新版本___ SDE3.0,现将其新功能介绍如下:
1、SDE3.0进一步增强了将空间数据集成到数据库中去的能力
* 将空间数据加到任意的DBMS表中
除了创建一个新表存储空间数据外,你还可以在以有的表中增加一项用来存放该数据的空间信息。SDE创建存储和索引空间数据所需的所有数据表,并将这些表与其它的数据表相联。
* 空间数据表和其它数据表之间的关系合并
3.0版中,SDE允许访问任意的DBMS数据表,包括空间的和非空间的。访问空间数据表时,须用SDE的API,而访问非空间表时则用标准的SQL。
* 纯属性访问
SDE现在允许对RDBMS进行纯粹针对属性的查询、修改和数据提取等访问。
* 一对多关系
SDE现在支持要属和属性之间的一对多关系。
* 创建和删除空间及非空间数据表
在以前的版本中,是不允许在SDE中访问非空间数据表的,现在可以了。
* 同时与多个数据集相联
3.0版中,应用可同时与多个数据集相连,并且可与不同的服务器上的数据集相连。
* 支持多关系查询
你可同时进行任意数目的查询。SDE3.0支持多数据流访问一个或多个SDE Layers上的数据。
* SDE不再有独立的安全机制,而是直接使用DBMS的安全机制
2、log文件定到SDE Layers
SDE使每个Layer对应一个log文件。
3、提供更快的数据传输
3.0版进行了一系列的改进,大大加快了SDE服务器、RDBMS和客户端数据传输的速度。
4、直接加载ARC/INFO COVERAGE
新的命令cov2sde可直接将ARC/INFO Coverages、Map Library Layers 和ArcStorm layers加载到SDE中。同时,你也可将SDE数据返回为Coverages