伺机安装到位,吉优database是面向对象的空间数据存储模型

先是说一下感想呢,刚出道时认为深似海,掉到了GIS开拓的扫帚星万宜水库里了,首先是学了小三个月的Flex,用到了ArcGIS
API for
Flex,接着又是八个月的ArcEngine开拓,今后总算摸到了好何时代的脚后跟,初阶了自己的ArcGIS
API for
JavaScript的旅程。说实话还是蛮喜欢GIS开辟这一行业的,很有意思,平常能够因而不一致的接口来实现同一个职能,同一时间呢还足以因而同多少个接口来做不一致的事。言归正传,首先要求桑土计划一下ArcGIS
属性图层编辑的工具:

一、概述

(1)Geodatabase是什么?

ArcGIS操作基于GIS文件格式和仓库储存于地理数据库(吉优database)中的地理新闻。吉优database是ArcGIS的地头数据结构,是用于编辑和数量管理的核心数据格式。它并不是四个数据库,只是联周详据库与GIS的一种工具。

空中数据库系统是描述、存款和储蓄和处理空间数据及其属性数据的数据库系统,按是不是对空间数据和属性数据实行总体协会分为二种:混合型空间数据库和集成性空间数据库。在后世方案中,为促成对空中对象的一条记下(record)变长的非结构化特征在关系型数据库的仓库储存和拍卖(空间图形数据不能够直接动用通用的关周详据管理种类),以及维护空间数据的拓扑关系,在对空间数据和属性数据集成的切磋试行中,建议面向对象数据库以及轻巧落到实处的相比较折中的对象-关系模型数据库。

 

(2)Geodatabase的类型

吉优database是面向对象的空间数据存款和储蓄模型,将地理数据存款和储蓄在平时的文本File 吉优database中、Personal
database(微软的Access数据库的.mdb文件)中要么多用户的关周全据库Enterprise 吉优database(比如Oracle,
Microsoft SQL Server, 或然IBM DB2)。

日前,结合Oracle对吉优database实行付出和治本的措施有二种:1.运用Oracle
Spatial的景观下使用Oracle Spatial SQL类型;2.行使ArcSDE
SQL类型——ArcSDE是一种基于中间件的对象-关周到据库模型。ArcSDE自个儿只是三个能在种种DBMS平台上提供高等的、高质量的GIS数据管理借口。

 图片 1

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

  • 地理数据库是ArcGIS的原生数据结构,而且是用来编辑和数码管理的要紧数据格式。当ArcGIS使用多少个地理消息种类(GIS)文件格式的地理音讯时,会接纳地理数据库功效。
  • 它是地理音讯的轮廓存款和储蓄,首要使用数据库管理种类(DBMS)或文件系统。通过ArcGIS或透过选拔SQL的数据库管理体系,能够访问和使用数据集会集的此物理实例。
  • 地理数据库具备完善的音信模型,用于表示和治本地理新闻。此周详新闻模型以一雨后鞭笋用于保存要素类、栅格数据集和属性的表的不二秘诀来贯彻。其余,高端GIS数据对象可增加以下内容:GIS行为;用于管理空间完整性的条条框框;以及用于拍卖为主要原因素、栅格数据和性质的豁达空中关系的工具。
  • 地理数据库软件逻辑提供了ArcGIS中央银行使的通用应用程序逻辑,用于访问和拍卖种种文件中以及种种格式的具有地理数据。该逻辑协处地理数据库,包涵管理shapefile、Computer协助绘图(CAD)文件、不法则三角网(TIN)、格网CAD数据、印象、地理标记语言(放线菌壮观素L)文件和大气任何GIS数据源。
  • 地理数据库具备用于管理GIS数据专门的事业流的事人体模型型。

 

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

1.ArcGIS Destop10.2

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

地理数据库是各种类型地理数据集(吉优dataset)的联谊。数据集是在
ArcGIS
中集体和应用地理新闻的首要门路。地理数据库富含三种重要数据集类型:

  • 要素类
  • 栅格数据集

创造那么些多少集类型的集合是设计和构建地理数据库的第一步。用户一般是以塑造若干上述三种基本数据集来开首构建地理数据库的。然后,用户能够动用更加高端的功用(举个例子增添拓扑、网络或子类型)来增加或扩大地理数据库,以便建立模型GIS 行为、维护数据完整性和拍卖重要的半空中关系集。

 

高等地理数据类型实现对要素类、栅格和属性表的扩张

汪洋的吉优database成分用来扩张轻易的表,要素类、栅格数据集,包罗丰硕丰硕的一举一动,数据完整性、数据管理等技能。吉优database的形式富含定义、完整性法则和行事。当中囊括坐标系属性coordinate
systems、坐标分辨率coordinate resolution、要素类feature
classes、拓扑topologies、互连网networks、栅格目录raster
catalogs、关系relationships和属性域domains。格局音讯存款和储蓄在DBMS的吉优database元数据表的联谊中,那一个表定义了数码的完整性和行事。

 

另外,Geodatabase(ArcSDE)还支持业务和版本化,除了辅助可在超大面积高品质数据库中选用的各样数据类型(如注记、拓扑、互连网、地形和地方定位器)以外,还支持功用完善的业务框架,可对各个数额管理专业流程和操作进行管制。

 

1  Geodatabase概念

2.ArcGIS Server10.2

2、Geodatabase的存储

吉优database存款和储蓄的数量范围

吉优database的存款和储蓄不仅仅囊括轻易的上空坐标和属性数据的表格,还满含那一个地理数据集的情势和准绳。吉优database的二种基础数据集(要素类,属性表和栅格数据集)和其余的吉优database成分都以表格的方式积存。在吉优dataset中空间表示如故以矢量要素的花样储存,或然以栅格数据存储。几何对象和价值观的属性字段一齐存款和储蓄在表的列中。

 

*Geodatabase几何要素怎么样存款和储蓄?***

吉优database将地理要素以表格的形式积攒,每行记录表示八个因素。在 ArcGIS
中,几何数据类型用于提醒表中所存款和储蓄几何的品类(点、线、面、多点或多面体)。通过 ArcGIS 创设的存放为几何类型的字段称为
SHAPE。空间(图形)音讯存款和储蓄在Shape字段中,数据类型是吉优metry(如下表)。比如多边形要素集,在Shape列为每种要素存款和储蓄了六头形类型,值Polygon用于描述Shape列的几何坐标和几何样子,表示在每一行定义了贰个polygon。更加多实际情况参见ArcGIS字段数据类型

图片 2 

吉优database的二个第一战略便是选择奥迪Q5DBMS来治本从轻易要素集到海量数据集,多用户并发操作的GIS数据集。二维表为几何数据集提供了主导的蕴藏机制。SQL语言具有庞大的查询和操作表的效应,吉优database就是基于想采纳那些效应而规划的。

在Geodatabase中,每种要素类(FeatureClass,见下)在三个独自的表中被处理。在要素类表中:每一个要素类是三个表;单独的成分被积累为行;Shape存款和储蓄各种要素的geometry
(point, line, polygon);Object ID列存款和储蓄每种要素的独一标志符。在ArcSDE
Geodatabase中,关周详据仓库储存款和储蓄每一个要素类为三个表。有三种DBMSs(Oracle,
DB2,和Informix)提供了SQL访谈吉优database中的要素的geometry。

 

  吉优database是ArcInfo8引进的一种斩新的面向对象的空间数据模型,是起家在DBMS之上的联结的、智能的空间数据模型。“统一”是指,Geodatabase在此以前的八个空间数据模型都不可能在三个联结的模子框架下对地理空间要素音讯举行联合的陈说,而吉优database做到了那或多或少;“智能化”是指,在吉优database模型中,对空中要素的叙述和发挥较以前的空间数据模型更类似大家的切实世界,更能清晰、正确地显示实际空间对象的新闻。

3.ArcGIS SDE10.2

3、要素类FeatureClass

*FeatureClass的概念***

ArcGIS是利用吉优database作为地理数据模型的,而在吉优database中常用的因素类有五种:点、线、多边形和注记,那八种要素类在ArcGIS产品中颇具重大概念意义。要素类是兼备同等几何类型和总体性的因素的集纳。对于实际采纳中相遇高端地理要素,能够依照属性特点,结合互连网模型和拓扑模型进行建立模型。比方,下水道管线和入孔井盖组成了二个大雪管线网络;相邻的地块分享了国有的疆界,大多数地块用户通过使用topology来保持在数量汇总分享要素的完整性。

 

哪些规定三个因素类?

在ArcGIS中,要素类是有着同等空间参谋和属性设置的大同小异要素的集结。注意:当在吉优database中开创二个要素类时,供给设置要素类型以定义要素类的品类(点、线、多边形等等)。平常,要素类是点、线或多边形的集纳,具体有7种成分类型。

1)  
点-用来抒发那么些不大且不可能用线或多边形来代表的地理要素(如GPS观测站)。

2)  
线—用来公布这一个长条形的,极其狭小也不能够用多边形表示的地理要素,如街道大旨线和溪水。线也足以发挥那多少个有长度却尚未面积的因素,如概况线和边界。

3)  
多边形-是三个查封的图形,用来代表均质要素的模样和地点,如州、县、土地、土壤类型可能土地使用类型区等。

4)  
注记-地图像和文字本,包含文件怎样协会的属性;举例,除了各种注记的文本字符串。还满含别的品质,如放置文字形状,字体,字体大小和其余显示属性。注记也得以是feature-linked,也得以分包子类。

5)  
维度—一种奇特的注记,它显得具体的长短或离开;举例,为了展现二个构筑物或一块地的一条边的长度,也许两个不等因素之间的相距。维度日常用来GIS设计、工程和工具应用中。

6)  
多点—由持续贰个点构成的因素。Multipoints平常用于管理多量点集结的数组,如激光雷达点串,它们得以涵盖几十亿个点。使用几个独自的列表示那样的点几何是不可行的。聚类那些多点行能够使吉优database管理大块点集结。

7)  
Multipatches—叁个3D几何图形用于表明要素的外界表面恐怕外形,这一个成分占用贰个离散的二维面积依旧三个维度空间的容积。Multipatches由平面包车型地铁3D环和三角形组成。Multipatches能够被用来阐明任何简单到复杂的靶子,如球体和立方体到表面和建筑。

要素数据集Feature Datasets

要素数据集是集体一个通用坐标系的连锁要素类的集合。要素数据集用于按空间或主旨整合有关要素类。它们的首要用途是,将相关要素类编排成三个公用数据集,用以营造拓扑、互连网数据集、地形数据集或几何网络。Feature
Datasets是在FeatureClass之上的多个定义,分裂的FeatureClass具备拓扑关系时,应把它们协会在一个Feature
Datasets里面,同样在AO开拓中是三个相当重大的基础性的类/Class。越多参见本文吉优database的类别布局

 

4、吉优database基本作用/职责

设计多少个Geodatabase;

创制一个吉优database;

加载数据集和栅格到吉优database中;

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

用域、关联和子类型增添表;

扩大栅格数据集;

加载和掩护吉优database中各类数据集的多寡;

管住吉优database的创新和作业;

管理File或者Personal
Geodatabase;

管理ArcSDE Geodatabase。

  吉优Database的安插性珍视是本着专门的职业关周全据库技能的恢宏,它增添了古板的点、线和面特征,为空间消息定义了一个联结的模型。在该模型的根底上,使用者能够定义和操作分歧应用的切实模型,譬如交通布置模型、土地管理模型、电力线路模型等。吉优Database为成立和操作分裂用户的数据模型提供了三个联结的、庞大的平台。

4.Microsoft SQL Server2008R2

(1)构建Geodatabase

连锁软件:ArcCatalog、ArcMap

证实:用户可轻巧创立地理数据库并向其丰裕行为,并且选用ArcGIS for
Desktop中的数据处理工科具时无需进行编制程序专门的学问。在ArcMap(用于编辑、分析地图和以及基于数据创造地图的应用程序)中查询和编排地理数据库时,能够很自在地选取地理数据库中的数据和展现,而无需实行其余自定义。通过创办子类型、验证准则、关系和几何网络将表现增多到地理数据库。能够利用ArcMap通过编写制定地理数据库中的一些存世要素并加上一些新因向来选择该表现。

  由于吉优database是一种面向对象的数据模型,在此模型中,空间中的实体能够象征为富有性质、行为和涉嫌的靶子。吉优database描述地理对象主要透过以下以下各类样式:

ArcGIS Destop、Server和SQL
Server的装置百度时而皆有个别,珍视讲一下ArcSDE的设置, 

->创建Geodatabase

展开ArcCatalog,并动用Folder
Connections连接受地理数据文件地点:图片 3

在文书夹Logo上右键,采纳New选项,新建私人商品房吉优database:

 图片 4

 此时创设的地理数据库myPGdb.mdb是一个空的,必要向当中创设或增添要素及别的内容。一般选拔导入,能够用要素类、表、栅格数据集丰裕数据库:

 图片 5

用户也足以友善新建要素(数据)集,以及表、关系、栅格目录等,随后在新建的花色中编辑或增添相应地理要素,注意加多的数量必须满意自定义的各类准则:

 图片 6

 

  (1)用矢量数据描述不总是的指标;

手续:展开ESOdysseyI.exe,采用ArcSDE for Microsoft SQL
Server,最后竣事完结后张开ArcMap

(2)添加、编辑Geodatabase要素

  (2)用栅格数据描述接二连三对象;

图片 7

->将Table添加进Geodatabase

(注:中期版本的吉优database与高版本的开始展览数据沟通时有的时候会发出错误,那时能够在高版本境况下新建数据集,再将坐标系、字段、记录等每一种增加进去。)

 图片 8

 

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

开采ArcToolbox,Data ManageMent(数据管理工科具)——吉优database
Administration(地理数据库处理)——Create Enterprise
吉优database(创设公司版地理数据库)

->新建并增多要素类

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

 图片 9

接下去设置坐标系,能够选择将已有些坐标系音讯导入,此处略;

然后步入字段设计,能够增进要求的字段,编辑其性质,如外号、数据类型、是还是不是为空、暗中认可值等,设计好之后保存。

 图片 10

 ->增多/编辑要素数据项

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

 图片 11

接下去实行字段匹配与编辑:

 图片 12

点击完结,可以在Preview查看是或不是中标。

 图片 13

  (4)用Location可能Address描述位址。

图片 14

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

属性域是陈诉字段类型合法值的条条框框。几个要素类和表能够分享数据库中累积的属性域。举个例子,在供水管网中,分化用途的支管的压力值能够在区别psi之间。

要素类的子类型:通过创办子类型,能够使各种要素使用各不相同的属性域、暗中同意值或连通性法规,类似于程序设计中的枚举数据类型。

对象时期的关联:对象之间全数1:1,1:n,m:n的涉及,举例通过宗地与主人之间的关系类,在动用ArcMap中的数据时,能够轻便寻找怎样全数者具有何样宗地。

点击数据库名字前的 +
号,张开数据集,在必要增加的数量集上右键Properties,展开属性面板:

在本文使用的数据库例子中,字段<BSM>(标志码)代表了差别地块项目,同样类其他地块具备同一个BSM,故能够用<BSM>树立子类型Subtypes

 图片 15

同一,在Subtypes选项卡上边,紧接着,是编纂字段属性域Domain功用(注:Domain选项卡用于安装地理坐标范围,与表字段非亲非故):

 图片 16

关系在吉优database中作为一体系/Class来统一计划,用户使用时索要对它实行创办,在数据库上右键New->Relationship
Class 图片 17

 填写关系类名称,选定营造关联的五个要素类:

 图片 18

挑选涉及项目:

 图片 19

分选事关字段:

 图片 20

   吉优database还协助表达具有差别档次特征的目的,包蕴轻便的物体、地理要素(具备空间新闻的对象)、网络要素(与别的因素有几何关系的靶子)、拓扑相关因素、注记要素以及其余更规范的性状类型。该模型还同意定义对象之间的涉及和法则,从而保险地物对象间相关性和拓扑性的全部。

图片 21

(3)将有关要素类组织成要素数据集

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

图片 22

总得运用要素数据集来保存出席以下任啥地点理数据库功能的成分类群集:

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

2  吉优database种类布局

服从上述手续填写内容后,导入SDE授权文件,点击finish达成操作,汇合世上边的分界面,等待安装到位。

->新建要素数据集Feature Datasets

 图片 23

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

  吉优database以档次结构的多寡对象来集团地理数据。那个数量对象存款和储蓄在要素类(Feature
Classes)、对象类(0bject classes)和数据集(Feature datasets)中。Object
Class能够明白为是一个在吉优database中储存非空间数据的表。而Feature
class是持有一样几何类型和品质结构的要素(Feature)的汇聚。

 图片 24

->新建几何网络

右键New->吉优metric Network最终一项,

 图片 25

挑选用于创设几何互联网的数据类:

 图片 26

  要素数据集(Feature
datasets)是公共同一空间参谋要素类的聚众。要素类(Feature
Class)累积能够在要素数据集(Feature
datasets)内部协会轻便要素,也能够独自于要素数据集(Feature
datasets)。独立于要素数据集(Feature datasets)的简短的要素类(Feature
Class)称为独立要素类(Feature class)。存款和储蓄拓扑要素( Feature
)的因素类必须在要素数据集(Feature dataset)内,以管教多个手拉手的空中参谋。

设置好后,展开ArcCatalog,图片 27,加多完地理数据库一定要记得注册哦!(相当重视)

->创建拓扑

一律,右键New->Topology,能够创立拓扑:

 图片 28

 

  吉优database的基本种类布局包罗要素数据集、栅格数据集、TIN数据集、独立的指标类、独立的要素类、独立的涉及类和属性域。当中,要素数据集又由对象类、要素类、关系类、几何互联网结合。

 

(4)在数据库服务器上开创吉优database

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

3  吉优database的二种存款和储蓄方案

接下去正是明天的主菜了,张开ArcMap加多贰个矢量图层

->安装SQL Server 2008 R2

行使私下认可实例名MSSQLSE智跑VE哈弗,设置sa用户密码,选取双记超级模特式。

  吉优database提供了分裂档期的顺序的空间数据存款和储蓄方案,能够分为三种——Personal吉优database(个人空间数据库)、File
吉优database(基于文件格式的数据库)和ArcSDE
吉优database(集团级空中数据库)。

图片 29

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

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

1.Personal Geodatabase

初叶“File——Share as——Service——Publish a
service”,最要害的供给在Capabilities(技能)选拔“Feature Access”,

->安装ArcSDE for Microsoft SQL Server

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

设置成功的注解为esri_sde服务成功运转。查看方法:在ComputerLogo上右键“管理”,在“服务与应用程序”中找到“服务”,运转ArcSde
Service(esri_sde)。

图片 30

  Personal
吉优database首要适用于在单用户下专业的CIS系统,适用于Mini项目标地理音讯体系。ArcGIS对私家Geodatabase同样具备专职能协理。Personal
吉优database实际上正是七个Microsoft
Access数据库,当用户安装ArcGIS的时候,系统就机关安装了Microsoft
Jet,用户无需再其它安装Microsoft
Access数据库。也正是说,Personal吉优database对于ArcGIS用户是免费的,它采纳Microsoft
Jet Engine的数据文件,将空间数据存放在Access数据库中。Personal
吉优database更像基于文件的办事空间,在行使Personal
吉优database时需求小心的是,Personal
Geodatabase的最大体量是2G,何况只协助windows平台。

图片 31

->关联SDE

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

 图片 32

中标总是时如下图所示:

 图片 33

那时候能够把gis-HP sde当作前边陈诉的地理数据库,实行新建要素类/数据集。

 图片 34

在SQL Server中查看如下:

 图片 35

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

诸如此比就能够在ArcGIS和DBMS中联合处理地理数据了。

2.File Geodatabase

选用属性图层成效,点击“Analyze”剖析图层是还是不是足以公告,如无错误提醒,点击“Publish”,公布成功后

二、吉优database的体系布局

  在ArcGIS 9.2版本中,引进了一种全新的空间数据存款和储蓄方案——File
吉优database,它也是适用于单用户境况的,一样能够援助完全的吉优database数据模型,同样能够让用户在未曾DBMS的景观下行使大数据集。File
吉优database数据以文件格局积存在Windows、Solaris以及Linux系统的文件夹内。体量限制方面,File
吉优database中的每一种表都能积攒1TB的数目,那正是说对其他利用目标,用户都能够帮衬极其大的数额集。Fiel
吉优database还装有减少矢量数据的选项,通过那么些选项,用户能够在确定保证品质的还要削减硬盘占用,压缩比率能够直达2:1到25:1。从此时此刻测量检验的情况来看,File
Geodatabsse质量比Personal
吉优database要高20%到10倍。假诺使用压缩方式,它的习性与Shape文件相仿,况兼要强于Personal
吉优database。存款和储蓄同样的数额时,File 吉优database比Personal
吉优database缩小了50%到80%的磁盘占用空间。

图片 36

1、吉优database扮演的剧中人物

严峻来讲,吉优database并不是数据库。在ArcGIS和相关的用户系统中,通过吉优database这一标准化的地理数据模型,数据库管理体系(DBMS)能够被作为是开放的半空中数据库系统,那时通用关全面据模型的轻巧性和灵活性使数据库管理体系支持的应用程序范围特别广阔。数据的存放和提取由存款和储蓄层DBMS达成,高等的数码整合和多少管理效果则由运用层ArcGIS提供。

只是向DBMS增添对空中属性的空间类型以及SQL帮忙并不足以支撑GIS,拓扑、网络、线性参照他事他说加以考察系、栅格目录、注记、terrain、地图图层等都是GIS用以基于DBMS中所存款和储蓄的简练空间表现格局来促成GIS行为的高档次和品级对象。

 

从地点所述,能够看来吉优database在动用上的风味:

a)吉优database有二个大面积的音讯模型来表述和治本地理音信。那个音讯模型的完毕是通过一雨后鞭笋简单数据表,这几个表是存款和储蓄在要素类、栅格数据集和属性表中的。

b)高端的GIS数据对象通过扩大GIS行为、准绳来保管空间完整性,以及增添工具来拍卖要素、栅格和属性表的豁达的半空中关系。

c)吉优database能够访谈和管理二种多少格式的地理数据。吉优database帮忙Shapefiles,
CAD文件, TIN, Grids, CAD数据,imagery,还会有其余多量GIS数据源。

d) 吉优database具有一个事务处理模型来保管GIS的数码工作流。

  ArcGIS提供了一些工具来从DBMS格局的Geodatabase中领取三个File
吉优database以及将一个File
吉优database导人DBMS中。用户可以由此从任何任何Geodatabase或然所支持的文件结构内,比如Shape文件,加载数据来轻便地创制File
吉优databaee。File 吉优database很轻巧被ArcGIS Desktop、ArcGIS
Engine以及ArcGIS Server访谈和利用。

能够在ArcGIS ServiceDirectory中见到公告的 http://localhost:6080/arcgis/rest/services/locator/FeatureServer/0

2、吉优database为指标-关周到据模型

吉优database选用两层结构:数据存款和储蓄层和应用层。数据存款和储蓄层是将GIS数据存款和储蓄为File、XML、DBMS等种种格式(关系型数据库),而应用层则是保卫安全数据的高档逻辑和行事,比如Feature
Classes、Raster Dataset、Topology、Network、Address Locators等等(面向对象的思考)。多层的吉优database体系布局被称呼object-relational模型/OHighlanderDB。

DBMS作为一种存款和储蓄地理数据集的落实机制而被运用。可是,DBMS并不曾完全定义地理数据的语义。由此可以以为:吉优database选用两层种类布局,数据存储层和应用层,在数据存款和储蓄层达成多少存款和储蓄和找寻,在应用层完成高层数据完整性和音信管理。ArcSDE便是基于基于这种思维被规划出来的。

 

  别的,File 吉优databage还匡助存款和储蓄海量栅格数据集,与ArcSDE raster
schema包容。从脚下的取一向看,File 吉优database将在稳步替代Personal
吉优database。

 图片 37

3、Geodatabase的存款和储蓄是如何依据关系原则的?

DBMS管理吉优database有什么差距吧?

看来,吉优database的存储模型是以DBMS原则为根基,利用了一密密麻麻轻易却基本的关周密据库概念。DBMS(File
吉优database的文件系统)提供了简易而又正合分寸的数据模型存款和储蓄和操作表。包罗以下的重要概念:

  • 多少被集体为表
  • 表满含行,表中具备的行具备同样的列
  • 每一列具有三个等级次序,如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所支撑。如,ESPRADOI提供了二个空间列类型用于在ArcSDE
吉优databases存款和储蓄要素,帮忙那系列型的关周全据库有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数据库更新大概供给开始展览持续好多天或数周的关联八个编辑会话的大方改造。
  • 多用户编辑 –
    三个编辑职员平常供给同一时间更新同样的半空中整合要素。每位用户都亟需动用分其他数据库状态,进而查看各种更新,而忽略任何编写制定人员所做的更新。最终,每位用户需求提交更新并与另外编写制定人员开展和睦,以识别并消除全部抵触。
  • 检出/检入事务 –
    在多数情形下都亟需将数据库中与某一定区域或地面临应的那部分多少检出到个体Computer中,然后在只怕持续好多天或数周的离线会话中更新此音信,以致带到实地进行运动编辑和立异。那个立异必须付出到主数据库中。
  • 野史 –
    偶尔,在GIS数据库中保留各类要素的野史版本(固然在此特定版本更新后)、在存档中保留已不复采用且发出转移的成分的别本或追踪各类要素的历史是那多少个灵光的,比如,国家地图数据库中的宗地谱系或因素更新属性。
  • 传输只改造更新 –
    公司数据库和空间数据基础设备(其中的消息在逐个公司之间分享)的保险供给联合合营,这种搭档必要选取定义完善的可扩展标识语言(XML)架构并通过Internet来分享立异,进而在数据库之间分享只变动更新。
  • 分布式地理数据库复本 –
    区域数据库可以是分部GIS数据库中与某一定地理区域对应的那部分数码的别本。那多个数据库必须通过置换更新的主意定期开展联合。
  • DBMS之间的麻痹大要耦合复制 –
    平日,GIS数据必须在一多级数据库别本(复本)之间保持同步,每一个站点就要其地面数据库上推行各自的更新。平时,这一个数据库只是为期通过Web举办三番五次。更新必须按期从每一个数据库复本传输到另外数据库,同时本人的开始和结果也会拿走更新。在数不清场地下,DBMS是不相同的-比方,在Microsoft
    SQL Server、Oracle和IBMDB2之间复制数据集。

基于版本的地理数据库事务模型相对来讲极其轻易易行,即把立异记录在更换表中。版本会显式地将地理数据库的对象景况记录在增添表和删除表那多个增量表中。

  ArcSDE
吉优database首要用来在多用户互连网情形下工作的GIS系统。通过TCP/IP协议,安装在管理集团数据的关周密据库的服务器上的ArcSDE为运营在客户端的CIS应用程序提供ArcSDE
吉优database。通过ArcSDE,用户能够将多样数目产品依据吉优database模型存款和储蓄于经济贸易数据库系统中,并获得迅猛的管理和检索服务。

图片 38

5、Geodatabase XML

地理数据库可扩张标志语言(XML)代表了ES本田CR-VI的地理数据库与其余外界系统里面开放的音信沟通机制。ESMuranoI将全体的地理数据库方案和剧情作为XML标准开始展览了然的昭示和护卫,而且提供了一些达成示例来论述如何完结在异物系统之间分享数据更新。

由此选择地理数据库XML标准,不小地简化了地理数据库的XML地理空间音讯双向交流。外界应用程序能够接收XML数据流,其中囊括:

  • 交换和分享全体(以及一些)地理数据库方案;
  • 换到完整无损的数据集;
  • 换来轻巧要素集(与shapefile调换非常相似);
  • 行使XML流调换改换(增量)记录集,以在地理数据库和别的外界数据结构之间传递更新和退换。

地理数据库XML是用来在ArcGIS用户和表面用户间分享数据的首要沟通机制。

 

  ArcSDE
吉优database的一个最大特点正是利用ArcSDE在互连网情形下对空间数据实行多用户并行操作。其余ArcSDE 吉优databaee提供的版本调整机制也是Personal 吉优databaee和File
吉优database不享有的。通过ArcSDE,用户能够在0racle、Microsoft SQL
Server、InfoMix和DB2  中存取SDE图层。   

点开空间结果能够看到图层中相继要素的半空中地方

三、ArcSDE——空间数据引擎

ArcSDE是数据库系统中管理地理数据库的接口,通过该接口可现在关周详据库中出席空间数据,提供地理要素的长空地方及形状等消息,是ArcGIS与关周到据库之间的GIS通道。它同意用户在多样数据管理种类中管理地理音信,并使具备的ArcGIS应用程序都能够利用这几个多少。

  当用户从SDE图层中创制吉优database时,客户端供给向那个图层参加元数据表。那一个元数据富含子类、域、关联类、要素集等,那个元数据驱动ArcSDE管理的空中数据库真正展现了吉优database模型。

图片 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通道能够让用户在客户端应用程序内,或跨网络、跨Computer地对应用服务器举行各样多层结构的方案安插。

 

3  Geodatabase的优势

以此时候修改地理数据库中对应表中的成分经纬度数据,服务就能相应的爆发变化,不过在网页中的服务所表现只是缓存在网页上内容,要求刷新网页本领获取改观后的服务。

2、ArcSDE是基于多层种类布局的应用和存款和储蓄

数量的存放和提取由存款和储蓄层DBMS达成,而高档的数码整合和数据处理效能则由使用层ArcGIS提供。

ArcSDE用于高效的积累、索引、访谈和护卫DBMS中的矢量、栅格、元数据及任何空间数据。

ArcSDE使用DBMS帮忙的数据类型,以表格的款型管理底层存款和储蓄的空间数据,并可使用SQL在DBMS中拜望那几个多少。ArcSDE同有的时候候也提供了开放的客户端支出接口(C
API和JAVA API),通过那个接口,用户定制的应用程序也能够完全访谈底层的半空中数据表。

 

  地理空间数据模型从最初的CAD数据模型到Coverage数据模型,再进步为未来常见应用的吉优database
数据模型,经历了几十年的年月。吉优database为GIS应用程序提供常用的多寡接口和管制框架,提供了拍卖丰硕数据类型、应用复杂法则和事关、存取多量地理数据等作用。

以上均为民用支付经历所得,希望大家能够多多研究指正、沟通。

3、结合ArcSDE是依靠中间件的数据库模型

概述小字部分简介了对象-关系模型数据库O哈弗DB,它是面向对象观念与数据库管理种类组成的一个折中产物。OTiggoDB与GIS结合,具备如下优势:协理主题项目扩充;扶助复杂对象;支持承袭;帮助准则。

透过中间件(如ArcSDE),达成从半空对象模型到数据库存款和储蓄的炫丽,可防止止对DBMS内核的间接修改,消除数据库和最后用户直接口的差别。那标准的数据库一般包蕴用户-中间件-数据存款和储蓄层的百般3个档次,而中间件的首要职责便是深入分析并实施空间对象访谈命令。

  吉优database的优势主要在该模型对关全面据库的恢宏,具体突显以下多少个方面:

四、ArcEngine/AO中的Geodatabase

  (1) 
吉优database存款和储蓄要素的几何特点,便于开辟GIS应用程序中的空间操作作用,比方搜索与要素周边的指标大概有所一定长度的靶子,吉优database中还提供定义和管制数据的地理坐标系统的框架。

1、吉优database种类布局(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)几何互联网吉优metric Network

在多少要素类的功底上树立的类,可总结互联网的边要素和点要素。

  (2) 吉优database中的几何互联网(吉优metric
Network)可以效仿道路运输实业依旧其余公用设施网络,进行网络拓扑运算。

2、吉优database对象模型

(1)吉优database中的首要类

吉优database中的首要类分为职业区部分数码集部分,职业区部分至关心体贴要承担对吉优database中的各类数据源举行宏观管理,而数据集部分关键用于对数据库中各样实际的数据进展描述和保管。

 

WorkspaceFactory类

此类可被创设。用于生成Workspace,连接属性一般接纳PropertySet指标定义,并提供浏览、管理基于文件系统的Workspace方法。该类达成IWorkspaceFactory和IWorkspaceFactory2四个接口,派生种种一定数据库工作空间类。

IWorkspaceFactory接口提供成立和开发Workspace的主意,如Open方法用于张开ArcSDE数据库。

 

Workspace类

Workspace是多少个用于存放空间数据和非空间数据的容器,能够寄放FeatureDatasets、RasterDatasets和Tables等种种数码。该类完结IWorkspace、IWorkspace2等接口。

贰个Workspace能够被用作是文件系统中的目录,也可以被视作多个关周全据库。

 

FeatureDataset组件类

仓库储存同空间参谋的三个Feature Class的数据集,能够积攒吉优metric
Network和Relationship Class。达成IFeatureDataset接口,其CreateFeatureClass方法可用来成立新的Feature
Class。

 

(2)吉优database中的其它常用类

归纳与空间数据入库相关的类、与查询有关的类。

与空间数据入库相关的类完结了各样数码格式的转移,如FeatureDataConverter、FieldChecker、EnumFieldError等。

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

 

  (3)
吉优database中得以定义对象、要素之间的涉嫌(Relationships)。使用拓扑关系、空间说明和一般涉及,用户不只可以够定义要素的特点,还可以定义要素与其他因素的关系法规。当要素被移位、修改或删除的时候,用户优先定义好的涉及要素也会作出相应的扭转。

3、吉优database的使用与付出

程序分界面设计如下:

图片 40

运维程序前保障ArcSDE服务ersi_sde开启.

 

部分代码如下:

图片 41图片 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),同一时刻同意不相同用户对同样数据实行编辑,并可自动协和出现的冲突。

 

 

相关文章