ArcGIS Engine开发之旅05---空间数据库
原文: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---空间数据库的更多相关文章
- ArcGIS Engine开发之旅10--空间参考及坐标转换
原文:ArcGIS Engine开发之旅10--空间参考及坐标转换 空间参考(Spatial Reference)是 GIS 数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确 ...
- ArcGIS Engine开发之旅09--几何对象和空间参考
原文:ArcGIS Engine开发之旅09--几何对象和空间参考 1.Geometry Geometry 是 GIS 中使用最为广泛的对象集之一,用户在创建.删除.编辑和进行地理分析的时候,就是处 ...
- ArcGIS Engine开发之旅08--和查询相关的对象和接口
原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...
- ArcGIS Engine开发之旅07---文件地理数据库、个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 、打开栅格数据
原文:ArcGIS Engine开发之旅07---文件地理数据库.个人地理数据库和 ArcSDE 地理数据库中的栅格存储加以比较 .打开栅格数据 对文件地理数据库.个人地理数据库和 ArcSDE 地理 ...
- ArcGIS Engine开发之旅04---ARCGIS接口详细说明
原文:ArcGIS Engine开发之旅04---ARCGIS接口详细说明 ArcGIS接口详细说明... 1 1. IField接口(esriGeoDatabase)... 2 2. ...
- ArcGIS Engine开发之旅03--ArcGIS Engine中的控件
原文:ArcGIS Engine开发之旅03--ArcGIS Engine中的控件 制图控件,如MapControl.PageLayoutControl,其中MapControl控件主要用于地理数据的 ...
- ArcGIS Engine开发之旅02--ArcGIS Engine中的类库
原文:ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...
- ArcGIS Engine开发之旅01---产品组成、逻辑体系结构
原文:ArcGIS Engine开发之旅01---产品组成.逻辑体系结构 ArcGIS Engine 由两个产品组成: 面向开发人员的软件开发包(ArcGIS Engine Developer k ...
- arcgis engine 开发之QI
ArcGIS Engine开发基础之QI AO开发中QI(接口查询)非常重要,从某种意义上说不会QI就不会做AO开发. 在讲ArcGIS Engine开发QI实例操作之前,以一个现实生活例子以方便大家 ...
随机推荐
- BZOJ2610 : [Poi2003]Monkeys
考虑离线,将删边操作倒过来变成加边,等价于询问每个点什么时候与1连通 使用并查集维护,每次合并时如果有一边是1所在连通块,就把另一边的所有点的答案更新 #include<cstdio> # ...
- window.open() 被拦截后的分析
前言:此文章仅是个人工作中遇到问题后的一些记录和总结,可能毫无意义.. 事件回顾: 在开发中,PM要求在一个页面中输入多个链接然后可以一键在新窗口打开,所以就想到用window.open来实现,但是测 ...
- 理解cookie的path和domain属性
今天在做验证码时发现一个问题:A.B窗口都打开同一个页面,A先生成一个验证码,B再生成验证码,这时A所生成的验证码被B覆盖掉了.原因是使用了同名的cookie来存储验证码.一时找不到解决方法就参考了W ...
- 洛谷 P1908 逆序对 Label:归并排序||树状数组 不懂
题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定 ...
- [Unity2D]精灵
精灵是Unity2D里面对通过图片纹理实现的游戏对象,通常会是游戏里面的玩家,敌人之类的,在Unity里面创建一个精灵的操作非常简单,直接把图片资源拖放到Hierarachy视图就可以完成了精灵的创建 ...
- Codeforces Round #195 (Div. 2) D题Vasily the Bear and Beautiful Strings
这场CF,脑子乱死啊...C题,搞了很长时间,结束了,才想到怎么做.B题,没看,D题,今天看了一下,很不错的组合题. 如果n和m都挺多的时候 以下情况都是变为1,根据偶数个0,最后将会为1,奇数个0, ...
- ECMAScript继承
继承的定义 ECMAScript 实现继承可以从父类入手,所有开发者定义的类都可作为父类,出于安全考虑,本地类和宿主类不能作为父类,因为容易收到恶意攻击 创建只是用于给子类提供通用函数的父类被看作抽象 ...
- div里嵌套了img底部会有白块问题和图片一像素问题解决
div里嵌套了img底部会有白块 因为img默认是按基线(baseline)对齐的.对比一下图片和右边的p, q, y等字母,你会发现这三个字母的“小尾巴”和图片下方的空白一样高.下面这张图中的黑线就 ...
- 使用Objective-C的文档生成工具:appledoc
使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...
- QImage Color Convert to Gray 转为灰度图
在Qt中,我们有时需要把QImage类的彩色图片转为灰度图,一开始我想的是用QImage的成员函数convertToFormat(),但是试了好多参数,返现转化的图片都有问题,不是我们想要的灰度图,如 ...