原文:ArcGIS Engine开发之旅05---空间数据库

1  Geodatabase概念

  Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是建立在DBMS之上的统一的、智能的空间数据模型。“统一”是指,Geodatabase之前的多个空间数据模型都不能在一个统一的模型框架下对地理空间要素信息进行统一的描述,而Geodatabase做到了这一点;“智能化”是指,在Geodatabase模型中,对空间要素的描述和表达较之前的空间数据模型更接近我们的现实世界,更能清晰、准确地反映现实空间对象的信息。

  GeoDatabase的设计主要是针对标准关系数据库技术的扩展,它扩展了传统的点、线和面特征,为空间信息定义了一个统一的模型。在该模型的基础上,使用者可以定义和操作不同应用的具体模型,例如交通规划模型、土地管理模型、电力线路模型等。GeoDatabase为创建和操作不同用户的数据模型提供了一个统一的、强大的平台。

  由于Geodatabase是一种面向对象的数据模型,在此模型中,空间中的实体可以表示为具有性质、行为和关系的对象。Geodatabase描述地理对象主要通过以下以下四种形式:

  (1)用矢量数据描述不连续的对象;

  (2)用栅格数据描述连续对象;

  (3)用TINs描述地理表面;

  (4)用Location或者Address描述位址。

  Geodatabase还支持表达具有不同类型特征的对象,包括简单的物体、地理要素(具有空间信息的对象)、网络要素(与其他要素有几何关系的对象)、拓扑相关要素、注记要素以及其他更专业的特征类型。该模型还允许定义对象之间的关系和规则,从而保持地物对象间相关性和拓扑性的完整。

2  Geodatabase体系结构

  Geodatabase以层次结构的数据对象来组织地理数据。这些数据对象存储在要素类(Feature Classes)、对象类(0bject classes)和数据集(Feature datasets)中。Object Class可以理解为是一个在Geodatabase中储存非空间数据的表。而Feature class是具有相同几何类型和属性结构的要素(Feature)的集合。

  要素数据集(Feature datasets)是共用同一空间参考要素类的集合。要素类(Feature Class)储存可以在要素数据集(Feature datasets)内部组织简单要素,也可以独立于要素数据集(Feature datasets)。独立于要素数据集(Feature datasets)的简单的要素类(Feature Class)称为独立要素类(Feature class)。存储拓扑要素( Feature )的要素类必须在要素数据集(Feature dataset)内,以确保一个共同的空间参考。

  Geodatabase的基本体系结构包括要素数据集、栅格数据集、TIN数据集、独立的对象类、独立的要素类、独立的关系类和属性域。其中,要素数据集又由对象类、要素类、关系类、几何网络构成。

3  Geodatabase的三种存储方案

  Geodatabase提供了不同层次的空间数据存储方案,可以分成三种——PersonalGeodatabase(个人空间数据库)、File Geodatabase(基于文件格式的数据库)和ArcSDE Geodatabase(企业级空间数据库)。

1.Personal Geodatabase

  Personal Geodatabase主要适用于在单用户下工作的CIS系统,适用于小型项目的地理信息系统。ArcGIS对个人Geodatabase同样具有全功能支持。Personal Geodatabase实际上就是一个Microsoft Access数据库,当用户安装ArcGIS的时候,系统就自动安装了Microsoft Jet,用户无需再另外安装Microsoft Access数据库。也就是说,PersonalGeodatabase对于ArcGIS用户是免费的,它使用Microsoft Jet Engine的数据文件,将空间数据存放在Access数据库中。Personal Geodatabase更像基于文件的工作空间,在使用Personal Geodatabase时需要注意的是,Personal Geodatabase的最大容量是2G,并且只支持windows平台。

2.File Geodatabase

  在ArcGIS 9.2版本中,引入了一种全新的空间数据存储方案——File Geodatabase,它也是适用于单用户环境的,同样能够支持完整的Geodatabase数据模型,同样可以让用户在没有DBMS的情况下使用大数据集。File Geodatabase数据以文件形式存储在Windows、Solaris以及Linux系统的文件夹内。容量限制方面,File Geodatabase中的每个表都能存储1TB的数据,这就是说对任何应用目的,用户都能够支持非常大的数据集。Fiel Geodatabase还具有压缩矢量数据的选项,通过这个选项,用户可以在保证性能的同时减少硬盘占用,压缩比率可以达到2:1到25:1。从目前测试的情况来看,File Geodatabsse性能比Personal Geodatabase要高20%到10倍。如果采用压缩方式,它的性能与Shape文件相仿,并且要强于Personal Geodatabase。存储同样的数据时,File Geodatabase比Personal Geodatabase减少了50%到80%的磁盘占用空间。

  ArcGIS提供了一些工具来从DBMS形式的Geodatabase中提取一个File Geodatabase以及将一个File Geodatabase导人DBMS中。用户可以通过从其他任何Geodatabase或者所支持的文件结构内,例如Shape文件,加载数据来轻松地创建File Geodatabaee。File Geodatabase很容易被ArcGIS Desktop、ArcGIS Engine以及ArcGIS Server访问和使用。

  另外,File Geodatabage还支持存储海量栅格数据集,与ArcSDE raster schema兼容。从目前的趋势来看,File Geodatabase将要逐步取代Personal Geodatabase。

3.ArcSDE Geodatabase

  ArcSDE Geodatabase主要用于在多用户网络环境下工作的GIS系统。通过TCP/IP协议,安装在管理企业数据的关系数据库的服务器上的ArcSDE为运行在客户端的CIS应用程序提供ArcSDE Geodatabase。通过ArcSDE,用户可以将多种数据产品按照Geodatabase模型存储于商业数据库系统中,并获得高效的管理和检索服务。

  ArcSDE Geodatabase的一个最大特点就是使用ArcSDE在网络环境下对空间数据进行多用户并行操作。另外 ArcSDE Geodatabaee提供的版本控制机制也是Personal Geodatabaee和File Geodatabase不具有的。通过ArcSDE,用户可以在0racle、Microsoft SQL Server、InfoMix和DB2  中存取SDE图层。

  当用户从SDE图层中创建Geodatabase时,客户端需要向这些图层加入元数据表。这些元数据包括子类、域、关联类、要素集等,这些元数据使得ArcSDE管理的空间数据库真正体现了Geodatabase模型。

3  Geodatabase的优势

  地理空间数据模型从最初的CAD数据模型到Coverage数据模型,再发展为现今普通使用的Geodatabase 数据模型,经历了几十年的时间。Geodatabase为GIS应用程序提供常用的数据接口和管理框架,提供了处理丰富数据类型、应用复杂规则和关系、存取大量地理数据等功能。

  Geodatabase的优势主要在该模型对关系数据库的扩展,具体体现以下几个方面:

  (1)  Geodatabase存储要素的几何特性,便于开发GIS应用程序中的空间操作功能,比如查找与要素邻近的对象或者具有特定长度的对象,Geodatabase中还提供定义和管理数据的地理坐标系统的框架。

  (2) Geodatabase中的几何网络(Geometric Network)可以模拟道路运输实业或者其他公用设施网络,进行网络拓扑运算。

  (3) Geodatabase中可以定义对象、要素之间的关联(Relationships)。使用拓扑关系、空间表达和一般关联,用户不仅可以定义要素的特征,还可以定义要素与其他要素的关联规则。当要素被移动、修改或删除的时候,用户预先定义好的关联要素也会作出相应的变化。

  (4) Geodatabase通过定义域(Domain)和验证规则(Validation rule)来增强属性的完整性。

  (5) Geodatabase将要素的一些“自然”行为绑定到存储要素的表中。

  (6) Geodatabase可以有多个版本(Version),同一时刻允许不同用户对同一数据进行编辑,并可自动协调出现的冲突。

ArcGIS Engine开发之旅05---空间数据库的更多相关文章

  1. ArcGIS Engine开发之旅10--空间参考及坐标转换

    原文:ArcGIS Engine开发之旅10--空间参考及坐标转换 空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确 ...

  2. ArcGIS Engine开发之旅09--几何对象和空间参考

    原文:ArcGIS Engine开发之旅09--几何对象和空间参考 1.Geometry  Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处 ...

  3. ArcGIS Engine开发之旅08--和查询相关的对象和接口

    原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...

  4. ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据

    原文:ArcGIS Engine开发之旅07---文件地理数据库.个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 .打开栅格数据 对文件地理数据库.个人地理数据库和 ArcSDE 地理 ...

  5. ArcGIS Engine开发之旅04---ARCGIS接口详细说明

    原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1.      IField接口(esriGeoDatabase)... 2 2.    ...

  6. ArcGIS Engine开发之旅03--ArcGIS Engine中的控件

    原文:ArcGIS Engine开发之旅03--ArcGIS Engine中的控件 制图控件,如MapControl.PageLayoutControl,其中MapControl控件主要用于地理数据的 ...

  7. ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

    原文:ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...

  8. ArcGIS Engine开发之旅01---产品组成、逻辑体系结构

    原文:ArcGIS Engine开发之旅01---产品组成.逻辑体系结构 ArcGIS Engine 由两个产品组成:  面向开发人员的软件开发包(ArcGIS Engine Developer k ...

  9. arcgis engine 开发之QI

    ArcGIS Engine开发基础之QI AO开发中QI(接口查询)非常重要,从某种意义上说不会QI就不会做AO开发. 在讲ArcGIS Engine开发QI实例操作之前,以一个现实生活例子以方便大家 ...

随机推荐

  1. android 进程什么时候被销毁

    http://wear.techbrood.com/guide/components/processes-and-threads.html 每一个 android 应用默认会起一个进程,除非你用 an ...

  2. python 代码片段9

    #coding=utf-8 # 字符串指示符号 r表示raw u表示unicode mystring=u'this is unicode!--by' print mystring # 'raw'表示告 ...

  3. window.open() 被拦截后的分析

    前言:此文章仅是个人工作中遇到问题后的一些记录和总结,可能毫无意义.. 事件回顾: 在开发中,PM要求在一个页面中输入多个链接然后可以一键在新窗口打开,所以就想到用window.open来实现,但是测 ...

  4. DataTable.Compute方法使用实例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. [Cocos2d-x For WP8]Hello world

    [Cocos2d-x For WP8]Hello world Cocos2d-x For WP8使用C++开发,使用cocos2d-xv0.13同样的接口,Cocos2d-x For WP8的相关项目 ...

  6. td也可以溢出隐藏显示

    或许我这篇文章一取这样的名字,就会有人要问了:你怎么还在关注table啊,那早就过时了…赶紧Xhtml…div好…ul好…ol好…dl好…完了,不知道还有什么好了. table真的过时了么?你真的了解 ...

  7. Shortcut 常用快捷键

    多行注释: VS2010:   / NotePad++: Ctrl Q Xcode:    CMMND / 回到光标所在之前位置 VS2010: Ctrl +/- 关闭当前页: VS2010: 鼠标中 ...

  8. Qt中QUdpSocket序列化问题

    写了一个小的Qt网络程序,很简单,发送的网络消息除了字符串还有一个结构体.很简单的想到用memcpy()函数来将数据序列化为BYTE数组从而实现网络传输. 序列化是Java中一个概念,C中并没有,C+ ...

  9. serv-u and hway3.0

    一个非常好用的su提权脚本,在支持php的环境下,目录可读可写,基本秒杀. <? //HWay && Serv-U by r00t //r00t@007team.net //ww ...

  10. 开源top100

    1.SwitchyOmega 项目简介:SwitchyOmega 是 SwitchySharp 的新版本.这是一个 Chrome 浏览器用来切换不同代理的插件.SwitchyOmega 初次安装时会检 ...