Geodatabase是面向对象的空间数据存储模型,等待安装到位

先是说一下感想呢,刚出道时感到深似海,掉到了GIS开发的陨星大坑里了,首先是学了小半年的Flex,用到了ArcGIS
API for
Flex,接着又是半年的ArcEngine开发,现在算是摸到了某些一时的脚后跟,伊始了我的ArcGIS
API for
JavaScript的旅程。说实话仍旧蛮喜欢GIS开发这一行业的,很有趣,通常可以透过不同的接口来形成同一个功力,同时呢还足以经过同一个接口来做不同的事。言归正传,首先需要预备一下ArcGIS
属性图层编辑的工具:

一、概述

(1)Geodatabase是什么?

ArcGIS操作基于GIS文件格式和储存于地理数据库(Geodatabase)中的地理消息。Geodatabase是ArcGIS的地头数据结构,是用以编辑和数码管理的基本数据格式。它并不是一个数据库,只是联周密据库与GIS的一种工具。

空间数据库系统是讲述、存储和拍卖空间数据及其属性数据的数据库系统,按是否对空间数据和属性数据举行完全社团分为二种:混合型空间数据库和集成性空间数据库。在后者方案中,为促成对空间对象的一条记下(record)变长的非结构化特征在关系型数据库的贮存和拍卖(空间图形数据不可以一向运用通用的关周到据管理系列),以及保障空间数据的拓扑关系,在对空间数据和属性数据集成的研讨推行中,提议面向对象数据库以及容易落实的相比较折中的对象-关系模型数据库。

 

(2)Geodatabase的类型

Geodatabase是面向对象的空间数据存储模型,将地理数据存储在普通的文本File Geodatabase中、Personal
database(微软的Access数据库的.mdb文件)中依然多用户的关周详据库Enterprise Geodatabase(比如Oracle,
Microsoft SQL Server, 或者IBM DB2)。

当下,结合Oracle对Geodatabase举行开发和管制的主意有二种:1.行使Oracle
Spatial的图景下选拔Oracle Spatial SQL类型;2.接纳ArcSDE
SQL类型——ArcSDE是一种基于中间件的靶子-关周详据库模型。ArcSDE本身只是一个能在多种DBMS平台上提供高档的、高性能的GIS数据管理借口。

 ca88亚洲城网站 1

(3)术语“地理数据库”在ArcGIS中有四个意思:

  • 地理数据库是ArcGIS的原生数据结构,并且是用以编辑和数据管理的要害数据格式。当ArcGIS使用四个地理信息连串(GIS)文件格式的地理新闻时,会采取地理数据库功能。
  • 它是地理新闻的物理存储,紧要行使数据库管理序列(DBMS)或文件系统。通过ArcGIS或通过使用SQL的数据库管理序列,可以访问和应用数据集集合的此物理实例。
  • 地理数据库具有完善的音信模型,用于表示和治本地理消息。此系数音讯模型以一层层用于保存要素类、栅格数据集和属性的表的点子来落实。此外,高级GIS数据对象可增长以下内容:GIS行为;用于管理空间完整性的规则;以及用于拍卖为首要素、栅格数据和属性的恢宏上空关系的工具。
  • 地理数据库软件逻辑提供了ArcGIS中运用的通用应用程序逻辑,用于访问和处理各样文件中以及各个格式的装有地理数据。该逻辑协理处理地理数据库,包括处理shapefile、总计机帮助绘图(CAD)文件、不规则三角网(TIN)、格网CAD数据、映像、地理标志语言(GML)文件和大量其他GIS数据源。
  • 地理数据库具有用于管理GIS数据工作流的业务模型。

 

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

1.ArcGIS Destop10.2

1、地理数据库中的基本数据集

地理数据库是各样类型地理数据集(Geodataset)的成团。数据集是在
ArcGIS
中团队和拔取地理新闻的显要路径。地理数据库包含二种重点数据集类型:

  • 要素类
  • 栅格数据集

创办这一个多少集类型的联谊是计划和构建地理数据库的首先步。用户一般是以构建若干上述二种为主数据集来起先构建地理数据库的。然后,用户可以选拔更尖端的效应(例如添加拓扑、网络或子类型)来添加或扩张地理数据库,以便建模
GIS 行为、维护数据完整性和拍卖首要的上空关系集。

 

高级地理数据类型实现对要素类、栅格和属性表的壮大

大方的Geodatabase元素用来扩展简单的表,要素类、栅格数据集,包括充分丰盛的一言一行,数据完整性、数据管理等能力。Geodatabase的格局包括定义、完整性规则和表现。其中囊括坐标系属性coordinate
systems、坐标分辨率coordinate resolution、要素类feature
classes、拓扑topologies、网络networks、栅格目录raster
catalogs、关系relationships和属性域domains。形式信息囤积在DBMS的Geodatabase元数据表的成团中,那一个表定义了数据的完整性和行为。

 

另外,Geodatabase(ArcSDE)还支持事务和版本化,除了协理可在超大规模高性能数据库中采纳的多种数据类型(如注记、拓扑、网络、地形和地点定位器)以外,还襄助效能完善的事务框架,可对多种数额管理工作流程和操作举办管制。

 

1  Geodatabase概念

2.ArcGIS Server10.2

2、Geodatabase的存储

Geodatabase存储的数据范围

Geodatabase的囤积不仅囊括简单的上空坐标和属性数据的报表,还包括那个地理数据集的形式和规则。Geodatabase的二种基础数据集(要素类,属性表和栅格数据集)和其它的Geodatabase元素皆以表格的格局储存。在Geodataset中空间表示依旧以矢量要素的款式储存,或者以栅格数据存储。几何对象和价值观的性质字段一起存储在表的列中。

 

*Geodatabase几何要素怎样存储?***

Geodatabase将地理要素以表格的款型储存,每行记录代表一个元素。在 ArcGIS
中,几何数据类型用于指示表中所存储几何的序列(点、线、面、多点或多面体)。通过 ArcGIS 创立的仓储为几何类型的字段称为
SHAPE。空间(图形)信息囤积在Shape字段中,数据类型是Geometry(如下表)。例如多边形要素集,在Shape列为每个要素存储了多方形类型,值Polygon用于描述Shape列的几何坐标和几何样子,表示在每一行定义了一个polygon。更多详情参见ArcGIS字段数据类型

ca88亚洲城网站 2 

Geodatabase的一个第一策略就是选择RDBMS来管理从简单要素集到海量数据集,多用户并发操作的GIS数据集。二维表为几何数据集提供了要旨的储存机制。SQL语言具有强有力的询问和操作表的坚守,Geodatabase正是遵照想使用这多少个功用而计划的。

在Geodatabase中,每个要素类(FeatureClass,见下)在一个独门的表中被管制。在要素类表中:每个要素类是一个表;单独的要素被贮存为行;Shape存储每个要素的geometry
(point, line, polygon);Object ID列存储每个要素的绝无仅有标识符。在ArcSDE
Geodatabase中,关周详据库存储每个要素类为一个表。有二种DBMSs(Oracle,
DB2,和Informix)提供了SQL访问Geodatabase中的要素的geometry。

 

  Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是起家在DBMS之上的联结的、智能的空间数据模型。“统一”是指,Geodatabase往日的六个空间数据模型都不可以在一个合并的模子框架下对地理空间要素音信举行联合的描述,而Geodatabase做到了这或多或少;“智能化”是指,在Geodatabase模型中,对空间要素的叙说和揭橥较以前的空间数据模型更仿佛大家的现实世界,更能清晰、准确地显示实际空间对象的消息。

3.ArcGIS SDE10.2

3、要素类FeatureClass

*FeatureClass的概念***

ArcGIS是运用Geodatabase作为地理数据模型的,而在Geodatabase中常用的因素类有四种:点、线、多边形和注记,这四种要素类在ArcGIS产品中拥有关键概念意义。要素类是怀有相同几何类型和性质的因素的集结。对于实际运用中遭遇高级地理要素,可以按照属性特点,结合网络模型和拓扑模型举行建模。比如,下水道管线和入孔井盖组成了一个清明管线网络;相邻的地块共享了国有的界线,大多数地块用户通过使用topology来保持在数额汇总共享要素的完整性。

 

什么规定一个元素类?

在ArcGIS中,要素类是独具相同空间参考和特性设置的同样要素的集合。注意:当在Geodatabase中创设一个因素类时,需要设置要素类型以定义要素类的花色(点、线、多边形等等)。经常,要素类是点、线或多边形的汇集,具体有7种元素类型。

1)  
点-用来表达这多少个很小且不能够用线或多边形来代表的地理要素(如GPS观测站)。

2)  
线—用来表明那个长条形的,分外狭窄也不可能用多边形表示的地理要素,如街道主题线和溪水。线也能够表明那么些有长度却绝非面积的要素,如概略线和边际。

3)  
多边形-是一个封闭的图形,用来表示均质要素的造型和地方,如州、县、土地、土壤类型或者土地使用类型区等。

4)  
注记-地图文本,包括文件如何社团的习性;例如,除了每个注记的文本字符串。还包括此外属性,如放置文字形状,字体,字体大小和其它呈现属性。注记也得以是feature-linked,也得以分包子类。

5)  
维度—一种特有的注记,它显得具体的尺寸或离开;例如,为了显得一个构筑物或一块地的一条边的长度,或者六个不同因素之间的偏离。维度日常用来GIS设计、工程和工具应用中。

6)  
多点—由持续一个点组成的元素。Multipoints平常用于管理大量点集合的数组,如激光雷达点串,它们得以分包几十亿个点。使用一个独立的列表示这样的点几何是不可行的。聚类这么些多点行可以使Geodatabase处理大块点集合。

7)  
Multipatches—一个3D几何图形用于表明要素的表面表面或者外形,这些元素占用一个离散的二维面积依旧三维空间的体积。Multipatches由平面的3D环和三角形组成。Multipatches可以被用于表明任何简单到复杂的靶子,如球体和立方体到表面和建筑。

要素数据集Feature Datasets

要素数据集是公家一个通用坐标系的相关要素类的联谊。要素数据集用于按空间或要旨整合有关要素类。它们的重要用途是,将相关要素类编排成一个公用数据集,用以构建拓扑、网络数据集、地形数据集或几何网络。Feature
Datasets是在FeatureClass之上的一个定义,不同的FeatureClass具有拓扑关系时,应把它们协会在一个Feature
Datasets里面,同样在AO开发中是一个很重要的基础性的类/Class。更多参见本文Geodatabase的系统布局

 

4、Geodatabase基本效率/任务

统筹一个Geodatabase;

确立一个Geodatabase;

加载数据集和栅格到Geodatabase中;

用高档数据类型扩张要素类;

用域、关联和子类型扩张表;

壮大栅格数据集;

加载和保安Geodatabase中每个数据集的数额;

管制Geodatabase的翻新和作业;

管理File或者Personal
Geodatabase;

管理ArcSDE Geodatabase。

  GeoDatabase的统筹重点是对准专业关周密据库技术的扩大,它扩大了传统的点、线和面特征,为空间音讯定义了一个联合的模子。在该模型的基础上,使用者可以定义和操作不同采用的现实性模型,例如交通计划模型、土地管理模型、电力线路模型等。GeoDatabase为创制和操作不同用户的数据模型提供了一个联结的、强大的平台。

4.Microsoft SQL Server2008R2

(1)构建Geodatabase

有关软件:ArcCatalog、ArcMap

证实:用户可轻松创设地理数据库并向其丰硕行为,并且使用ArcGIS for
Desktop中的数据管理工具时不需要开展编程工作。在ArcMap(用于编辑、分析地图和以及依照数量制造地图的应用程序)中询问和编辑地理数据库时,可以很轻松地利用地理数据库中的数据和表现,而无需举行任何自定义。通过成立子类型、验证规则、关系和几何网络将表现添加到地理数据库。能够动用ArcMap通过编制地理数据库中的一些存世要素并充足一些新因一向选拔该作为。

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

ArcGIS Destop、Server和SQL
Server的设置百度时而都有的,重点讲一下ArcSDE的装置, 

->创建Geodatabase

打开ArcCatalog,并动用Folder
Connections连接受地理数据文件地方:ca88亚洲城网站 3

在文件夹图标上右键,采取New选项,新建民用Geodatabase:

 ca88亚洲城网站 4

 此时创办的地理数据库myPGdb.mdb是一个空的,需要向里面创制或加上要素及此外内容。一般采纳导入,可以用要素类、表、栅格数据集充足数据库:

 ca88亚洲城网站 5

用户也可以团结新建要素(数据)集,以及表、关系、栅格目录等,随后在新建的品种中编辑或加上相应地理要素,注意添加的数目必须满意自定义的各个规则:

 ca88亚洲城网站 6

 

  (1)用矢量数据描述不总是的对象;

手续:打开ESRI.exe,选用ArcSDE for Microsoft SQL
Server,最后竣工完成后打开ArcMap

(2)添加、编辑Geodatabase要素

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

ca88亚洲城网站 7

->将Table添加进Geodatabase

(注:早期版本的Geodatabase与高版本的进展数据交流时有时会爆发错误,这时能够在高版本环境下新建数据集,再将坐标系、字段、记录等次第增长进去。)

 ca88亚洲城网站 8

 

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

开辟ArcToolbox,Data ManageMent(数据管理工具)——Geodatabase
Administration(地理数据库管理)——Create Enterprise
Geodatabase(创立集团版地理数据库)

->新建并添加要素类

(注:要指定要素类型,如下为线状要素Line Features):

 ca88亚洲城网站 9

接下去设置坐标系,可以采取将已有些坐标系新闻导入,此处略;

接下来进入字段设计,可以添加需要的字段,编辑其性质,如别称、数据类型、是否为空、默认值等,设计好将来保存。

 ca88亚洲城网站 10

 ->添加/编辑要素数据项

在地方创立的空<线状地物>要素类上右键Load,装载数据:

 ca88亚洲城网站 11

接下去举办字段匹配与编制:

 ca88亚洲城网站 12

点击完成,可以在Preview查看是否中标。

 ca88亚洲城网站 13

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

ca88亚洲城网站 14

->用域、关联和子类型扩大表

属性域是描述字段类型合法值的条条框框。六个要素类和表可以共享数据库中蕴藏的属性域。例如,在供水管网中,不同用途的支管的压力值可以在不同psi之间。

要素类的子类型:通过创造子类型,可以使各类要素使用各不相同的属性域、默认值或连通性规则,类似于程序设计中的枚举数据类型。

目的之间的关联:对象期间有着1:1,1:n,m:n的关系,例如通过宗地与主人之间的涉嫌类,在拔取ArcMap中的数据时,可以轻松找出哪些所有者拥有什么样宗地。

点击数据库名字前的 +
号,展开数据集,在急需扩展的数额集上右键Properties,打开属性面板:

在本文使用的数据库例子中,字段<BSM>(标识码)代表了不同地块类型,相同档次的地块拥有同一个BSM,故可以用<BSM>创建子类型Subtypes

 ca88亚洲城网站 15

一如既往,在Subtypes选项卡下面,紧接着,是编辑字段属性域Domain功能(注:Domain选项卡用于安装地理坐标范围,与表字段无关):

 ca88亚洲城网站 16

关系在Geodatabase中作为一体系/Class来设计,用户使用时需要对它举行创办,在数据库上右键New->Relationship
Class ca88亚洲城网站 17

 填写关系类名称,选定建立关系的三个要素类:

 ca88亚洲城网站 18

选取事关项目:

 ca88亚洲城网站 19

选拔涉及字段:

 ca88亚洲城网站 20

   Geodatabase还襄助表明具有不同品种特征的靶子,包括简单的物体、地理要素(具有空间消息的对象)、网络要素(与此外因素有几何关联的目标)、拓扑相关要素、注记要素以及其他更规范的风味类型。该模型还同意定义对象期间的关系和规则,从而保障地物对象间相关性和拓扑性的完整。

ca88亚洲城网站 21

(3)将有关要素类协会成要素数据集

要素数据集是一组按空间或主旨相关、共享一个通用坐标系的要素类。要素数据集用于保存参预共享拓扑、网络数据集、几何网络或地形的要素类。

ca88亚洲城网站 22

无法不选取要素数据集来保存参预以下任何地理数据库效用的元素类集合:

  • 拓扑
  • 网络数据集(必须具有ArcGIS Network Analyst扩大模块以供役使)
  • 地势(必须怀有ArcGIS 3D Analyst扩展模块以供役使)
  • 几何网络
  • 地籍结构

2  Geodatabase系列布局

依据上述手续填写内容后,导入SDE授权文件,点击finish完成操作,相会世下面的界面,等待安装到位。

->新建要素数据集Feature Datasets

 ca88亚洲城网站 23

右键Import,向Feature
Datasets添加要素类
,这一步是下列操作的前提;

  Geodatabase以层次结构的数目对象来协会地理数据。这一个数据对象存储在要素类(Feature
Classes)、对象类(0bject classes)和数据集(Feature datasets)中。Object
Class可以清楚为是一个在Geodatabase中储存非空间数据的表。而Feature
class是富有相同几何类型和性能结构的因素(Feature)的会面。

 ca88亚洲城网站 24

->新建几何网络

右键New->Geometric Network最终一项,

 ca88亚洲城网站 25

慎接纳于建立几何网络的数据类:

 ca88亚洲城网站 26

  要素数据集(Feature
datasets)是公私同一空间参考要素类的会聚。要素类(Feature
Class)储存可以在要素数据集(Feature
datasets)内部社团简单要素,也可以单独于要素数据集(Feature
datasets)。独立于要素数据集(Feature datasets)的简约的要素类(Feature
Class)称为独立要素类(Feature class)。存储拓扑要素( Feature
)的元素类必须在要素数据集(Feature dataset)内,以担保一个协同的空中参考。

设置好后,打开ArcCatalog,ca88亚洲城网站 27,添加完地理数据库一定要记得注册哦!(很重要)

->建立拓扑

如出一辙,右键New->Topology,可以建立拓扑:

 ca88亚洲城网站 28

 

  Geodatabase的主导系列布局包括要素数据集、栅格数据集、TIN数据集、独立的对象类、独立的要素类、独立的关系类和属性域。其中,要素数据集又由对象类、要素类、关系类、几何网络结合。

 

(4)在数据库服务器上创办Geodatabase

(注:本文以ArcSDE for Microsoft SQL Server为例。)

3  Geodatabase的两种存储方案

接下去就是前几天的主菜了,打开ArcMap添加一个矢量图层

->安装SQL Server 2008 R2

行使默认实例名MSSQLSERVER,设置sa用户密码,接纳双记超形式。

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

ca88亚洲城网站 29

->创立sde帐户和sde空数据库

设置到位后,以sa用户登录,创设sde帐户,密码使用sde。打开sde帐户属性,赋予其全方位高高的权力。制造名为sde的数据库以作后用。

1.Personal Geodatabase

启航“File——Share as——Service(Service)——Publish a
service”,最要紧的内需在Capabilities(能力)选拔“Feature Access”,

->安装ArcSDE for Microsoft SQL Server

设置图解参见另一篇小说<点此链接>

安装成功的表明为esri_sde服务成功启动。查看方法:在处理器图标上右键“管理”,在“服务与应用程序”中找到“服务”,启动ArcSde
Service(Service)(esri_sde)。

ca88亚洲城网站 30

  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平台。

ca88亚洲城网站 31

->关联SDE

打开ArcCatalog,双击Database Connection下的Add Spatial Database
Connection:

 ca88亚洲城网站 32

打响连接时如下图所示:

 ca88亚洲城网站 33

那儿可以把gis-HP sde当作前边讲述的地理数据库,举办新建要素类/数据集。

 ca88亚洲城网站 34

在SQL Server中查看如下:

 ca88亚洲城网站 35

输入SQL语句:SELECT TOP 10 * from
sde.dbo.POLYGONFEATURE,结果列出表中前10条记下。

这般就足以在ArcGIS和DBMS中一头管理地理数据了。

2.File Geodatabase

分选属性图层功用,点击“Analyze”分析图层是否足以揭穿,如无错误提醒,点击“Publish”,发布成功后

二、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%的磁盘占用空间。

ca88亚洲城网站 36

1、Geodatabase扮演的角色

严俊来说,Geodatabase并不是数据库。在ArcGIS和有关的用户系统中,通过Geodatabase这一规范化的地理数据模型,数据库管理序列(DBMS)可以被视作是开放的空中数据库系统,这时通用关周密据模型的简单性和灵活性使数据库管理连串援助的应用程序范围十分普遍。数据的仓储和提取由存储层DBMS实现,高端的多寡整合和数量处理功用则由运用层ArcGIS提供。

只是向DBMS添加对空中属性的空间类型以及SQL襄助并不足以支撑GIS,拓扑、网络、线性参考系、栅格目录、注记、terrain、地图图层等都是GIS用以基于DBMS中所存储的简练空间表现模式来实现GIS行为的高等对象。

 

从地方所述,能够看看Geodatabase在利用上的表征:

a)Geodatabase有一个大规模的音信模型来发挥和治本地理消息。这些音信模型的实现是通过一密密麻麻简单数据表,这个表是存储在要素类、栅格数据集和属性表中的。

b)高级的GIS数据对象通过扩大GIS行为、规则来管理空间完整性,以及扩大工具来处理要素、栅格和属性表的大度的长空关系。

c)Geodatabase能够访问和处理多种多少格式的地理数据。Geodatabase襄助Shapefiles,
CAD文件, TIN, Grids, CAD数据,imagery,还有其它大量GIS数据源。

d) Geodatabase具有一个事务处理模型来保管GIS的数量工作流。

  ArcGIS提供了有些工具来从DBMS情势的Geodatabase中领到一个File
Geodatabase以及将一个File
Geodatabase导人DBMS中。用户能够由此从其他任何Geodatabase或者所襄助的文书结构内,例如Shape文件,加载数据来轻松地开创File
Geodatabaee。File Geodatabase很容易被ArcGIS Desktop、ArcGIS
Engine以及ArcGIS Server访问和接纳。

可以在ArcGIS Service(Service)Directory中看到布告的 http://localhost:6080/arcgis/rest/services/locator/FeatureServer/0

2、Geodatabase为对象-关系数据模型

Geodatabase采取两层构造:数据存储层和应用层。数据存储层是将GIS数据存储为File、XML、DBMS等多种格式(关系型数据库),而应用层则是维护数据的高等逻辑和行为,例如Feature
Classes、Raster Dataset、Topology、Network、Address Locators等等(面向对象的思维)。多层的Geodatabase连串布局被喻为object-relational模型/ORDB。

DBMS作为一种存储地理数据集的兑现机制而被采取。然则,DBMS并没有完全定义地理数据的语义。由此得以认为:Geodatabase选择两层系列布局,数据存储层和应用层,在数额存储层实现数量存储和搜索,在应用层实现高层数据完整性和音讯处理。ArcSDE正是基于基于这种考虑被设计出来的。

 

  此外,File Geodatabage还匡助存储海量栅格数据集,与ArcSDE raster
schema兼容。从脚下的主旋律来看,File Geodatabase将要渐渐取代Personal
Geodatabase。

 ca88亚洲城网站 37

3、Geodatabase的仓储是怎么依据关系原则的?

DBMS管理Geodatabase有何区别呢?

看来,Geodatabase的囤积模型是以DBMS原则为根基,利用了一雨后春笋简单却基本的关周密据库概念。DBMS(File
Geodatabase的文件系统)提供了简约而又非常的数据模型存储和操作表。包括以下的要紧概念:

  • 数据被公司为表
  • 表包含行,表中存有的行具有相同的列
  • 每一列具有一个类别,如integer, decimal number, character, date等等。
  • 波及类用于一个表中的行和另一个表中的行暴发关系,这是以每个表中都有一个集体的列为基础的。
  • 涉及完整性规则存在于拥有表中。如,每一行总是有同样的列,一个域为每一列指定了有效值或者值范围等等。

对ArcSDE Geodatabases来说,还有大量另外的DBMS效率可以动用:

  • SQL,一多级关系函数和操作符可以用来操作表和表中的元素。
  • SQL操作符同时被设计为可以拍卖一般的关系数据类型,如integers。

譬如说,一个元素类以DBMS表的样式储存。每一行代表一个要素,每一行中列描述了该因素的各个特色或性能,表中的某一列存储了该因素的几何样子(如point,
line或polygon
coordinates)。假若shape字段存储了polygon形状,在DBMS中大量的列类型用于shape字段,可以是特出的binary
large object
(BLOB)类型或者是增加的长空类型,它们可以被部分DBMS所支撑。如,ESRI提供了一个空间列类型用于在ArcSDE
Geodatabases存储要素,扶助这序列型的关周密据库有Oracle, IBM DB2,
和Informix。SQL操作表中的行、列。这个列类型(numbers, characters, dates,
BLOB’s, spatial
types等等)在SQL代数中被认为是目的。DBMS管理这一个概括的数据类型和表,同时其余应用逻辑实现更复杂的目的行为和完整性约束。

 

*Geodatabase空间数据的大体存储形式***

DBMS中的地理数据库存储包含两组表:数据集表(用户定义的表)和系统表(元数据)。

(1)  数据集表 –
地理数据库中的每个数据集都存储在一个或五个表中。这个多少集表使用系统表管理数据。

(2)  系统表 –
地理数据库系统表用于追踪每个地理数据库的始末。它们实质上讲述的是用来指定所有数据集定义、规则和涉嫌的地理数据库方案。这个系统表包含并管理元数据,所有这么些元数据均为促成地理数据库属性、数据印证规则和表现所需。

 

ArcGIS 10中有两个主系统表:

GDB_Items:包含地理数据库中的所有项(例如要素类、拓扑和属性域)的列表

GDB_ItemTypes:包含识其它项类型(例如表)的预定义列表

GDB_ItemRelationships:包含各样项之间的方案关联,例如要素数据汇总包含哪些要素类

GDB_ItemRelationshipTypes:包含识此外涉嫌项目(例如
DatasetInFeatureDataset)的约定义列表

 

3.ArcSDE Geodatabase

同一的可以在数据库软件中找到新建的地理数据库(抽象意义上的,SDE只是ArcGIS
和 SQL之间的中间件,数据库仍然放在SQL
Server上的),如下图中的spatial数据库–>RES2_4M表就是咱们属性服务图层的情节,你会意识这些数据库同时兼有了空间属性

4、地理数据库事务管理

在重重情景下,用户可利用数据库管理系列(DBMS)的事情框架来管理地理数据库的编制和更新。GIS用户会碰着重重长工作工作流极其关键的情形。在大多数情况下,通过采用多用户DBMS和ArcSDE并使用版本化方法来治本对GIS数据库的翻新,可以应对这一个情况。

行使基于版本的作业模型的GIS数据编译工作流可以做到:

  • 三个编辑会话 –
    单个GIS数据库更新可能需要开展持续数天或数周的涉嫌五个编辑会话的雅量改变。
  • 多用户编辑 –
    五个编辑人士时时索要同时更新相同的空间组成要素。每位用户都亟待运用各自的数据库状态,从而查看各个更新,而忽略任何编制人士所做的立异。最终,每位用户需要提交更新并与其余编制人员开展和谐,以识别并解决所有争辩。
  • 检出/检入事务 –
    在重重情景下都急需将数据库中与某一定区域或地面对应的这有些数额检出到个人总结机中,然后在可能不断数天或数周的离线会话中立异此消息,甚至带到现场开展移动编辑和换代。那个立异必须交给到主数据库中。
  • 野史 –
    有时,在GIS数据库中保存每个要素的野史版本(尽管在此特定版本更新后)、在存档中保存已不复行使且发生转移的因素的副本或跟踪各类要素的历史是非凡得力的,例如,国家地图数据库中的宗地谱系或因素更新属性。
  • 传输只改变更新 –
    公司数据库和空间数据基础设备(其中的音讯在各样社团之间共享)的掩护需要一起协作,这种搭档需要接纳定义完善的可扩张标记语言(XML)架构并因而Internet来共享革新,从而在数据库之间共享只变动更新。
  • 分布式地理数据库复本 –
    区域数据库可以是总局GIS数据库中与某一定地理区域对应的这部分多少的副本。这两个数据库必须透过置换更新的不二法门定期举行共同。
  • DBMS之间的涣散耦合复制 –
    通常,GIS数据必须在一多元数据库副本(复本)之间保持同步,每个站点将在其地面数据库上推行各自的翻新。平时,这几个数据库只是为期通过Web进行连续。更新必须定期从每个数据库复本传输到其他数据库,同时自己的情节也会获取更新。在诸多景观下,DBMS是例外的-例如,在Microsoft
    SQL Server、Oracle和IBMDB2之间复制数据集。

据悉版本的地理数据库事务模型绝对而言异常简短,即把改进记录在变更表中。版本会显式地将地理数据库的目的情状记录在添加表和删除表这五个增量表中。

  ArcSDE
Geodatabase首要用于在多用户网络环境下工作的GIS系统。通过TCP/IP协议,安装在管理公司数量的关周详据库的服务器上的ArcSDE为运行在客户端的CIS应用程序提供ArcSDE
Geodatabase。通过ArcSDE,用户可以将多种数码产品依照Geodatabase模型存储于商业数据库系统中,并拿到高速的管制和检索服务。

ca88亚洲城网站 38

5、Geodatabase XML

ca88亚洲城网站,地理数据库可扩充标记语言(XML)代表了ESRI的地理数据库与其余外部系统里面开放的音信交流机制。ESRI将一体化的地理数据库方案和情节作为XML规范开展公开的揭破和护卫,并且提供了有的兑现示例来论述怎么样落实在异物系统里头共享数据更新。

透过利用地理数据库XML规范,极大地简化了地理数据库的XML地理空间信息双向交换。外部应用程序可以接收XML数据流,其中囊括:

  • 互换和共享全体(以及一些)地理数据库方案;
  • 换成完整无损的数据集;
  • 交换简单要素集(与shapefile互换非常相像);
  • 行使XML流互换变更(增量)记录集,以在地理数据库和任何外部数据结构之间传递更新和更改。

地理数据库XML是用以在ArcGIS用户和表面用户间共享数据的关键交换机制。

 

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

点开空间结果可以看来图层中各种要素的空中地点

三、ArcSDE——空间数据引擎

ArcSDE是数据库系统中管理地理数据库的接口,通过该接口可以往关周到据库中进入空间数据,提供地理要素的半空中地点及形状等音讯,是ArcGIS与关周详据库之间的GIS通道。它同意用户在多种数据管理连串中管理地理音讯,并使所有的ArcGIS应用程序都可以使用这多少个数据。

  当用户从SDE图层中创制Geodatabase时,客户端需要向那一个图层出席元数据表。那多少个元数据包括子类、域、关联类、要素集等,这个元数据驱动ArcSDE管理的上空数据库真正呈现了Geodatabase模型。

ca88亚洲城网站 39

1、ArcSDE的切切实实效果

(1)高性能的DBMS通道

ArcSDE是多种DBMS的大路,它自己不是一个关周详据库或数额存储模型。标准的SQL并不帮忙空间数据。ArcSDE不但协助每个DBMS提供的不同常常效用,而且能为底层DBMS提供它们所不具有的效能支撑。

(2)开放的DBMS支持

包括:Oracle、Oracle with Spatial or Locator、Microsoft SQL
Server、Informix以及IBM DB2,PostgreSQL等。

多用户ArcSDE为用户提供了大型空间数据库协理,并且辅助多用户编辑。

(3)连续、可伸缩的数据库

GIS工作流和长事务处理GIS中的数据管理工作流。

(4)充裕的地理音讯数据模型

(5)灵活的安排

ArcSDE通道可以让用户在客户端应用程序内,或跨网络、跨统计机地对应用服务器举办多种多层结构的方案安排。

 

3  Geodatabase的优势

其一时候修改地理数据库中对应表中的元素经纬度数据,服务就会相应的暴发变化,然而在网页中的服务所展现只是缓存在网页上内容,需要刷新网页才能得到改观后的劳务。

2、ArcSDE是基于多层序列布局的运用和储存

数据的蕴藏和领取由存储层DBMS实现,而高端的数目整合和数码处理效果则由使用层ArcGIS提供。

ArcSDE用于高效的存储、索引、访问和维护DBMS中的矢量、栅格、元数据及其它空间数据。

ArcSDE使用DBMS襄助的数据类型,以表格的款式管理底层存储的空间数据,并可选取SQL在DBMS中走访那么些多少。ArcSDE同时也提供了开放的客户端支出接口(C
API和JAVA API),通过那个接口,用户定制的应用程序也得以完全访问底层的长空数据表。

 

  地理空间数据模型从最初的CAD数据模型到Coverage数据模型,再前行为现在普通应用的Geodatabase
数据模型,经历了几十年的时日。Geodatabase为GIS应用程序提供常用的多寡接口和管制框架,提供了处理丰硕数据类型、应用复杂规则和事关、存取大量地理数据等效果。

上述均为民用支付经历所得,希望我们可以多多批评指正、交换。

3、结合ArcSDE是遵照中间件的数据库模型

概述小字部分简要介绍了目标-关系模型数据库ORDB,它是面向对象思想与数据库管理连串组成的一个折中产物。ORDB与GIS结合,具有如下优势:补助中央类型扩展;辅助复杂对象;协助继承;帮忙规则。

透过中间件(如ArcSDE),实现从空中对象模型到数据库存储的照耀,可以避免对DBMS内核的一向改动,消除数据库和最后用户直接口的差别。这规范的数据库一般包括用户-中间件-数据存储层的非凡3个层次,而中间件的根本任务就是分析并施行空间对象访问命令。

  Geodatabase的优势紧要在该模型对关周全据库的恢宏,具体显示以下多少个地点:

四、ArcEngine/AO中的Geodatabase

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

1、Geodatabase连串布局(AO角度)

(1)要素类Feature Class

代表拥有同等几何样子的长空实体,分为点状、线状、面状要素类等。

(2)对象类Object Class

意味着非空间实体,无法在地形图上一贯表示,但与地图上的地图元素直接关乎。

要素类和目的类的第一区别是:前者存储了空间音讯,对象类则并未。

(3)要素数据集Feature Datasets

由一组具有同样空间参考(Spatial
Reference)的元素类组成,用于存放矢量数据。

(4)栅格数据集Raster Datasets

用来存放栅格数据,匡助海量数据与形象镶嵌。可确立金字塔索引。

(5)TIN数据集TIN Datasets

由一层层不规则的三角构成,代表了地表的大起大落。

(6)关系类Relationship Class

用来定义四个不等的要素类或对象类之间的关系关系。

(7)属性域Domain

概念属性的实惠取值范围。

(8)几何网络Geometric Network

在多少要素类的基础上建立的类,可概括网络的边要素和点要素。

  (2) Geodatabase中的几何网络(Geometric
Network)可以效仿道路运输实业仍然其它公用设施网络,举行网络拓扑运算。

2、Geodatabase对象模型

(1)Geodatabase中的紧要类

Geodatabase中的首要类分为工作区部分数据集部分,工作区部分重要负责对Geodatabase中的各类数据源进行宏观管理,而数据集部分着重用来对数据库中各样现实的数量开展描述和管制。

 

WorkspaceFactory类

此类可被创立。用于生成Workspace,连接属性一般采取PropertySet目的定义,并提供浏览、管理基于文件系统的Workspace方法。该类实现IWorkspaceFactory和IWorkspaceFactory2三个接口,派生多种特定数据库工作空间类。

IWorkspaceFactory接口提供创建和开辟Workspace的章程,如Open方法用于打开ArcSDE数据库。

 

Workspace类

Workspace是一个用以存放空间数据和非空间数据的器皿,可以存放FeatureDatasets、RasterDatasets和Tables等各类数码。该类实现IWorkspace、IWorkspace2等接口。

一个Workspace可以被视作是文件系统中的目录,也足以被当做一个关周到据库。

 

FeatureDataset组件类

储存同空间参考的多少个Feature Class的数据集,可以储存Geometric
Network和Relationship Class。实现IFeatureDataset接口,其CreateFeatureClass方法可用于创建新的Feature
Class。

 

(2)Geodatabase中的另外常用类

包括与空间数据入库相关的类、与查询相关的类。

与空间数据入库相关的类实现了各类数据格式的变换,如FeatureDataConverter、FieldChecker、EnumFieldError等。

与查询有关的类有QueryFilter和SpatialFilter。

 

  (3)
Geodatabase中可以定义对象、要素之间的关联(Relationships)。使用拓扑关系、空间表明和一般涉及,用户不仅可以定义要素的特点,仍能够定义要素与另外因素的关联规则。当要素被挪动、修改或删除的时候,用户优先定义好的涉嫌要素也会作出相应的变化。

3、Geodatabase的拔取与开支

程序界面设计如下:

ca88亚洲城网站 40

运转程序前保证ArcSDE服务ersi_sde开启.

 

一对代码如下:

ca88亚洲城网站 41ca88亚洲城网站 42

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using ESRI.ArcGIS.esriSystem;
  9 using ESRI.ArcGIS.Carto;
 10 using ESRI.ArcGIS.Controls;
 11 using ESRI.ArcGIS.SystemUI;
 12 using ESRI.ArcGIS.Geometry;
 13 using ESRI.ArcGIS.Geodatabase;
 14 using ESRI.ArcGIS.DataSourcesFile;
 15 using ESRI.ArcGIS.Display;
 16 using ESRI.ArcGIS.DataSourcesGDB;
 17 using ESRI.ArcGIS.DataSourcesRaster;
 18 
 19 namespace lesson1
 20 {
 21     public partial class Form1 : Form
 22     {
 23         public Form1()
 24         {
 25             InitializeComponent();
 26         }
 27 
 28         private void Form1_Load(object sender, EventArgs e)
 29         {
 30             IAoInitialize pao = new ESRI.ArcGIS.esriSystem.AoInitialize();
 31             pao.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
 32 
 33         }
 34         // 工作空间
 35         IWorkspace workspace;
 36         //矢量数据工作空间
 37         IFeatureWorkspace featureWorkspace;
 38         //影像数据工作空间
 39         IRasterWorkspaceEx rasterWorkspace;
 40         //矢量数据集
 41         IFeatureDataset featureDataset;
 42         //影像数据集
 43         IRasterDataset rasterDataset;
 44         private void button1_Click(object sender, EventArgs e)
 45         {
 46             // SDE空间连接属性
 47             IPropertySet propertySet = new PropertySet();
 48             propertySet.SetProperty("server", this.textBox1.Text);
 49             propertySet.SetProperty("instance", this.textBox2.Text);
 50             propertySet.SetProperty("database", this.textBox3.Text);
 51             propertySet.SetProperty("user", this.textBox4.Text);
 52             propertySet.SetProperty("password", this.textBox5.Text);
 53             propertySet.SetProperty("version", "SDE.DEFAULT");
 54             IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactory();
 55             //打开SDE工作空间
 56 
 57             workspace = workspaceFactory.Open(propertySet, 0);
 58             MessageBox.Show("连接SDE空间数据库成功");
 59 
 60         }
 61         //创建数据集(矢量数据集和影像数据集)
 62         private void button2_Click(object sender, EventArgs e)
 63         {
 64             featureWorkspace = workspace as IFeatureWorkspace;
 65             rasterWorkspace = workspace as IRasterWorkspaceEx;
 66             //定义空间参考
 67             ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironment();
 68             ISpatialReference spatialReference = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_Beijing1954);
 69             spatialReference.SetDomain(-1000, -1000, 1000, 1000);
 70 
 71             IEnumDatasetName enumDatasetName;
 72             IDatasetName datasetName;
 73             string dsName = "";
 74             enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
 75             datasetName = enumDatasetName.Next();
 76             bool isExist = false;
 77             //创建矢量数据集
 78             dsName = "SDE." + this.textBox6.Text;
 79             while (datasetName != null)
 80             {
 81                 if (datasetName.Name == dsName)
 82                 {
 83                     isExist = true;
 84                 }
 85                 datasetName = enumDatasetName.Next();
 86             }
 87             if (isExist == false)
 88             {
 89                 featureDataset = featureWorkspace.CreateFeatureDataset(this.textBox6.Text, spatialReference);
 90             }
 91             //创建影像数据集
 92             isExist = false;
 93             enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTRasterDataset);
 94             datasetName = enumDatasetName.Next();
 95 
 96             dsName = "SDE." + this.textBox6.Text;
 97             while (datasetName != null)
 98             {
 99                 if (datasetName.Name == dsName)
100                 {
101                     isExist = true;
102                 }
103                 datasetName = enumDatasetName.Next();
104             }
105             if (isExist == false)
106             {
107                 //设置存储参数
108                 IRasterStorageDef rasterStorageDef = new RasterStorageDef();
109                 rasterStorageDef.CompressionType = esriRasterCompressionType.esriRasterCompressionUncompressed;
110                 rasterStorageDef.PyramidLevel = 1;
111                 rasterStorageDef.PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation;
112                 rasterStorageDef.TileHeight = 128;
113                 rasterStorageDef.TileWidth = 128;
114                 //设置坐标系统
115                 IRasterDef rasterDef = new RasterDef();
116                 UnknownCoordinateSystem system = new UnknownCoordinateSystem();
117                 ISpatialReference rasterDpatialRefrence = system as ESRI.ArcGIS.Geometry.ISpatialReference;
118                 rasterDef.SpatialReference = rasterDpatialRefrence;
119 
120                 IGeometryDef geometryDef = new GeometryDef();
121                 IGeometryDefEdit geometryDefedit = (IGeometryDefEdit)geometryDef;
122                 geometryDefedit.AvgNumPoints_2 = 5;
123                 geometryDefedit.GridCount_2 = 1;
124                 geometryDefedit.set_GridSize(0, 1000);
125                 geometryDefedit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
126 
127                 UnknownCoordinateSystem system2 = new UnknownCoordinateSystem();
128                 ISpatialReference spatialReference2 = system2 as ESRI.ArcGIS.Geometry.ISpatialReference;
129                 geometryDefedit.SpatialReference_2 = spatialReference2;
130                 rasterDataset = rasterWorkspace.CreateRasterDataset(this.textBox7.Text, 1, rstPixelType.PT_LONG, rasterStorageDef, "DEFAULTS", rasterDef, geometryDef);
131 
132             }
133 
134         }
135         //加载矢量数据到SDE数据库
136         private void button3_Click(object sender, EventArgs e)
137         {
138             featureWorkspace = workspace as IFeatureWorkspace;
139             this.openFileDialog1.Filter = "shp file (*.shp)|*.shp";
140             this.openFileDialog1.Title = "打开矢量数据";
141             this.openFileDialog1.Multiselect = false;
142             string fileName = "";
143             if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
144             {
145                 fileName = this.openFileDialog1.FileName;
146                 string filepath;
147                 string file;
148                 int lastIndex;
149                 lastIndex = fileName.LastIndexOf(@"\");
150                 filepath = fileName.Substring(0, lastIndex);
151                 file = fileName.Substring(lastIndex + 1);
152                 //读取SHP数据
153                 IWorkspaceFactory shpwpf = new ShapefileWorkspaceFactory();
154                 IWorkspace shpwp = shpwpf.OpenFromFile(filepath, 0);
155                 IFeatureWorkspace shpfwp = shpwp as IFeatureWorkspace;
156                 IFeatureClass shpfc = shpfwp.OpenFeatureClass(file);
157 
158                 //导入SDE数据库 
159                 IFeatureClass sdeFeatureClass = null;
160                 FeatureClassDescription fClassD = new FeatureClassDescription();
161                 IFeatureClassDescription featureClassDescription = fClassD as IFeatureClassDescription;
162                 IObjectClassDescription objectClassDescription = featureClassDescription as IObjectClassDescription;
163                 IFields fields = shpfc.Fields;
164                 IFieldChecker fieldChecker = new FieldChecker();
165                 IEnumFieldError enumFieldError = null;
166                 IFields validateFields = null;
167                 fieldChecker.ValidateWorkspace = featureWorkspace as IWorkspace;
168                 fieldChecker.Validate(fields, out enumFieldError, out validateFields);
169                 featureDataset = featureWorkspace.OpenFeatureDataset(this.textBox6.Text);
170                 try
171                 {
172                     sdeFeatureClass = featureWorkspace.OpenFeatureClass(shpfc.AliasName);
173                 }
174                 catch (Exception ex)
175                 {
176                 }
177                 //在SDE数据库中创建矢量数据集
178                 if (sdeFeatureClass == null)
179                 {
180                     sdeFeatureClass = featureDataset.CreateFeatureClass(shpfc.AliasName, validateFields, objectClassDescription.InstanceCLSID, objectClassDescription.ClassExtensionCLSID, shpfc.FeatureType, shpfc.ShapeFieldName, "");
181                 }
182                 IFeatureCursor featureCursor = shpfc.Search(null, true);
183                 IFeature feature = featureCursor.NextFeature();
184                 IFeatureCursor sdeFeatureCursor = sdeFeatureClass.Insert(true);
185                 IFeatureBuffer sdeFeatureBuffer;
186                 //添加实体对象
187                 while (feature != null)
188                 {
189                     sdeFeatureBuffer = sdeFeatureClass.CreateFeatureBuffer();
190                     IField shpField = new Field();
191                     IFields shpFields = feature.Fields;
192                     for (int i = 0; i < shpFields.FieldCount; i++)
193                     {
194                         shpField = shpFields.get_Field(i);
195                         int index = sdeFeatureBuffer.Fields.FindField(shpField.Name);
196                         if (index != -1)
197                         {
198                             sdeFeatureBuffer.set_Value(index, feature.get_Value(i));
199                         }
200                     }
201                     sdeFeatureCursor.InsertFeature(sdeFeatureBuffer);
202                     sdeFeatureCursor.Flush();
203                     feature = featureCursor.NextFeature();
204                 }
205                 //加载数据到Mapcontrol
206                 IFeatureLayer sdeFeatureLayer = new FeatureLayer();
207                 sdeFeatureLayer.FeatureClass = sdeFeatureClass;
208                 this.axMapControl1.Map.AddLayer(sdeFeatureLayer as ILayer);
209                 this.axMapControl1.Extent = this.axMapControl1.FullExtent;
210                 this.axMapControl1.Refresh();
211             }
212 
213         }
214         //加载影像数据到SDE数据库
215         private void button4_Click(object sender, EventArgs e)
216         {
217             this.openFileDialog1.Filter = "TIFF file (*.tif)|*.tif";
218             this.openFileDialog1.Title = "打开影像数据";
219             this.openFileDialog1.Multiselect = false;
220             string fileName = "";
221             if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
222             {
223                 fileName = this.openFileDialog1.FileName;
224                 string filepath;
225                 string file;
226                 int lastIndex;
227                 lastIndex = fileName.LastIndexOf(@"\");
228                 filepath = fileName.Substring(0, lastIndex);
229                 file = fileName.Substring(lastIndex + 1);
230 
231                 //导入SDE数据库 
232                 rasterWorkspace = workspace as IRasterWorkspaceEx;
233                 IWorkspaceFactory tifwpf = new RasterWorkspaceFactory();
234                 IWorkspace tifwp = tifwpf.OpenFromFile(filepath, 0);
235                 IRasterWorkspace tifrwp = tifwp as IRasterWorkspace;
236                 IRasterDataset rasterDataset = tifrwp.OpenRasterDataset(file);
237                 IRasterDataset sdeRasterDataset = null;
238                 lastIndex = file.LastIndexOf(@".");
239                 file = file.Substring(0, lastIndex);
240                 try
241                 {
242                     sdeRasterDataset = rasterWorkspace.OpenRasterDataset(file);
243                 }
244                 catch (Exception Ex)
245                 {
246                 }
247                 if (sdeRasterDataset == null)
248                 {
249                     IGeoDataset geoDataset = rasterDataset as IGeoDataset;
250                     IRasterSdeServerOperation rasterSdeServeroperation;
251 
252                     IBasicRasterSdeConnection sdeCon = new BasicRasterSdeLoader();
253                     IPropertySet propertySet = new PropertySet();
254                     propertySet = workspace.ConnectionProperties;
255                     //建立与SDE数据库的连接
256                     sdeCon.ServerName = propertySet.GetProperty("server").ToString();
257                     sdeCon.Instance = propertySet.GetProperty("instance").ToString();
258                     sdeCon.UserName = propertySet.GetProperty("user").ToString();
259                     sdeCon.Password = "sde";
260                     sdeCon.Database = propertySet.GetProperty("database").ToString();
261                     sdeCon.SdeRasterName = file;
262                     sdeCon.InputRasterName = fileName;
263                     rasterSdeServeroperation = sdeCon as IRasterSdeServerOperation;
264                     //保存影像数据到SDE数据库中
265                     rasterSdeServeroperation.Create();
266                     rasterSdeServeroperation.Update();
267                     rasterSdeServeroperation.ComputeStatistics();
268                     IRasterLayer rasterLayer = new RasterLayer();
269                     sdeRasterDataset = rasterWorkspace.OpenRasterDataset(file);
270                     rasterLayer.CreateFromDataset(sdeRasterDataset);
271                     this.axMapControl1.Map.AddLayer(rasterLayer as ILayer);
272                     this.axMapControl1.Extent = this.axMapControl1.FullExtent;
273                     this.axMapControl1.Refresh();
274                 }
275             }
276         }
277 
278     }
279 }

Form1.cs

 

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

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

  (6)
Geodatabase可以有五个本子(Version),同一时刻同意不同用户对相同数据举办编辑,并可机关协调出现的争论。

 

 

相关文章