求一个ArcSDE for SQL Server 10.2的安装包,谢谢。

求一个ArcSDE for SQL Server 10.2的安装包,谢谢。,第1张

具体步骤如下:1,启动SQL Server Management Studio,以SQL Server

方式登录并接

,

2,接着运行sde安装程序ESRI.exe出现以下界面,选择rcSDE for Microsoft SQL Server 32位安装。点击下一步,选择完整安装,下一步:,

3,

构架选择SDE方案,SQL Server用户实例名称是自己的计算机名称,连接使用选择以SQLSevver

,用户名和密码和连接数据库设置的相同,下一步:

4,关键步骤之一创建

所需的信息,设置sde用户的密码,数据库的名称要设置为sde,日志文件大小30,提示SDE数据库已成功创建,确定下一步:

5,接着提示将用户成功添加到数据库,并成功为sde用户授予创建权限,然后出现ArcSDE配置文件都使用默认文件,

6,此时断开SQLServer的数据库重新登录,可以看到“sde”的数据库被创建,同时,在安全性->登录名下同样创建了sde的登录名,

7,接着赋予sde用户管理的权限(避免配置ArcSDE中会出现“ insufficient permittion”的权限不足的提示)右键查看登录名下的”sde”属性,在”常规”下去掉”8,强制实施密码策略”选项,在”服务器角色”下,选中所有角色吧,便于管理:

点击OK以保存设置 ,然后返回SDE配置界面,填写资料档案库,下一步,提示资料档案库已成功完成,可以查看一下状态。

9,接着对ARcSDE 进行授权,选择用来自ESRI的授权文件进行授权,浏览打开arcsde10new2.ecp授权文件,授权完成,点击完成。接着创建ArcSDE服务信息,界面会已显示好信息,不需要做修改,提示是否启动SDE服务,选择是,显示启动成功,到此完成ArcSDE的安装和配置。

软件开发环境(Software Development Environment,SDE)是指在基本硬件和宿至软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。

SDE在欧洲又叫集成式项目支援环境(Integrated Project Support Environment,IPSE)。

软件开发环境的主要组成成分是软件工具。人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。存储各种软件工具加工所产生的软件产品或半成品(如源代码、测试数据和各种文档资料等)的软件环境数据库是软件开发环境的核心。工具间的联系和相互理解都是通过存储在信息库中的共享数据得以实现的。

软件开发环境数据库是面向软件工作者的知识型信息数据库,其数据对象是多元化、带有智能性质的。软件开发数据库用来支撑各种软件工具,尤其是自动设计工具、编译程序等的主动或被动的工作。

较初级的SDE数据库一般包含通用子程序库、可重组的程序加工信息库、模块描述与接口信息库、软件测试与纠错依据信息库等;较完整的SDE数据库还应包括可行性与需求信息档案、阶段设计详细档案、测试驱动数据库、软件维护档案等。更进一步的要求是面向软件规划到实现、维护全过程的自动进行,这要求SDE数据库系统是具有智能的,其中比较基本的智能结果是软件编码的自动实现和优化、软件工程项目的多方面不同角度的自我分析与总结。这种智能结果还应主动地被重新改造、学习,以丰富SDE数据库的知识、信息和软件积累。这时候,软件开发环境在软件工程人员的恰当的外部控制或帮助下逐步向高度智能与自动化迈进。

软件实现的根据是计算机语言。时至今日,计算机语言发展为算法语言、数据库语言、智能模拟语言等多种门类,在几十种重要的算法语言中,C&C++语言日益成为广大计算机软件工作人员的亲密伙伴,这不仅因为它功能强大、构造灵活,更在于它提供了高度结构化的语法、简单而统一的软件构造方式,使得以它为主构造的SDE数据库的基础成分——子程序库的设计与建设显得异常的方便。

事实上,以C&C++为背景建立的SDE子程序库能为软件工作者提供比较有效、灵活、方便、友好的自动编码基础,尤其是C++的封装等特性,更适合大项目的开发管理和维护。

软件开发环境可按以下几种角度分类:

(1)按软件开发模型及开发方法分类,有支持瀑布模型、演化模型、螺旋模型、喷泉模型以及结构化方法、信息模型方法、面向对象方法等不同模型及方法的软件开发环境。

(2)按功能及结构特点分类,有单体型、协同型、分散型和并发型等多种类型的软件开发环境。

(3)按应用范围分类,有通用型和专用型软件开发环境。其中专用型软件开发环境与应用领域有关,故又软件开发方法(Software Development Method)是指软件开发过程所遵循的办法和步骤。软件开发活动的目的是有效地得到一些工作产物,也就是一个运行的系统及其支持文档,并且满足有关的质量要求。软件开发是一种非常复杂的脑力劳动,所以经常更多讨论的是软件开发方法学,指的是规则、方法和工具的集成,既支持开发,也支持以后的演变过程(交付运行后,系统还会变化,或是为了改错,或是为了功能的增减)。

关于组成软件开发和系统演化的活动有着各种模型(参见软件生存周期,软件开发模型,软件过程),但是典型地都包含了以下的过程或活动:分析、设计、实现、确认(测试验收)、演化(维护)。

有些软件开发方法是专门针对某一开发阶段的,属于局部性的软件开发方法。特别是软件开发的实践表明,在开发的早期阶段多做努力,在后来的测试和维护阶段就会使费用较大地得以缩减。因此,针对分析和设计阶段的软件开发方法特别受到重视。其它阶段的方法,从程序设计发展的初期起就是研究的重点,已经发展得比较成熟(参见程序设计,维护过程)。除了分阶段的局部性软件开发方法之外,还有覆盖开发全过程的全局性方法,尤为软件开发方法学注意的重点。

对软件开发方法的一般要求:当提出一种软件开发方法时,应该考虑许多因素,包括:①覆盖开发全过程,并且便于在各阶段间的过渡;②便于在开发各阶段中有关人员之间的通信;③支持有效的解决问题的技术;④支持系统设计和开发的各种不同途径;⑤在开发过程中支持软件正确性的校验和验证;⑥便于在系统需求中列入设计、实际和性能的约束;⑦支持设计师和其他技术人员的智力劳动;⑧在系统的整个生存周期都支持它的演化;⑨受自动化工具的支持。此外,在开发的所有阶段,有关的软件产物都应该是可见和可控的;软件开发方法应该可教学、可转移,还应该是开放的,即可以容纳新的技术、管理方法和新工具,并且与已有的标准相适应可称为应用型软件开发环境。

⑷按开发阶段分类,有前端开发环境(支持系统规划、分析、设计等阶段的活动)、后端开发环境(支持编程、测试等阶段的活动)、软件维护环境和逆向工程环境等。此类环境往往可通过对功能较全的环境进行剪裁而得到。软件开发环境由工具集和集成机制两部分构成,工具集和集成机制间的关系犹如“插件”和“插槽”间的关系。

工具集:软件开发环境中的工具可包括:支持特定过程模型和开发方法的工具,如支持瀑布模型及数据流方法的分析工具、设计工具、编码工具、测试工具、维护工具,支持面向对象方法的OOA工具、OOD工具和OOP工具等;独立于模型和方法的工具,如界面辅助生成工具和文档出版工具;亦可包括管理类工具和针对特定领域的应用类工具。

集成机制:对工具的集成及用户软件的开发、维护及管理提供统一的支持。按功能可划分为环境信息库、过程控制及消息服务器、环境用户界面三个部分。

环境信息库:是软件开发环境的核心,用以储存与系统开发有关的信息并支持信息的交流与共享。库中储存两类信息,一类是开发过程中产生的有关被开发系统的信息,如分析文档、设计文档、测试报告等;另一类是环境提供的支持信息,如文档模板、系统配置、过程模型、可复用构件等。

过程控制和消息服务器:是实现过程集成及控制集成的基础。过程集成是按照具体软件开发过程的要求进行工具的选择与组合,控制集成并行工具之间的通信和协同工作。

环境用户界面:包括环境总界面和由它实行统一控制的各环境部件及工具的界面。统一的、具有一致视感(Look &Feel)的用户界面是软件开发环境的重要特征,是充分发挥环境的优越性、高效地使用工具并减轻用户的学习负担的保证。

较完善的软件开发环境通常具有如下功能:

(1)软件开发的一致性及完整性维护;

(2)配置管理及版本控制;

(3)数据的多种表示形式及其在不同形式之间自动转换;

(4)信息的自动检索及更新;

(5)项目控制和管理;

(6)对方法学的支持。

1. 打开 SDE 数据。 SDE 数据一定要使用工作空间工厂去初始化工作空间,在工作空间打开 FeatureClass,这是 最常规的 *** 作。下面通过一段 C#代码连接 SDE,打开并返回一个 IWorkspace。 public IWorkspace FindWsByDefault() { IPropertySet propSet = new PropertySetClass()propSet.SetProperty("Server", Lan)propSet.SetProperty("Instance", yangyang)propSet.SetProperty("Database", "")propSet.SetProperty("User", user)propSet.SetProperty("Password", pwd)propSet.SetProperty("Version", version)IWorkspaceFactory factory = new SdeWorkspaceFactoryClass()IWorkspace workspace = factory.Open(propSet, 0)return workspace} 通过上述代码打开了 SDE 的工作空间,接下来要做的就是获取要编辑的 FeatureClass。写一 个函数,通过 FeatureClass 的别名和所在的 Dataset 返回 FeatureClass。做法是先遍历所有的 DataSet, 找到符合要求的 Dataset 之后遍历里面的要素, 返回与参与别名一致的 FeatureClass (顺便说一下,FeatureClass 在没有指定别名的时候默认与 FeatureClass 名称相同) //查找指定要素 public IFeatureClass FindClassByName(IWorkspace ws, string className, string dsName) { IEnumDataset enumDsif (dsName != "") { enumDs = ws.get_Datasets(esriDatasetType.esriDTFeatureDataset)IFeatureDataset featureDs = enumDs.Next() as IFeatureDatasetwhile (featureDs != null) { if (featureDs.Name == dsName) { return GetFcFromDataset(featureDs, className)} featureDs = enumDs.Next() as IFeatureDataset} } else { enumDs = ws.get_Datasets(esriDatasetType.esriDTFeatureClass)return GetFcFromEnumDataset(enumDs,className)} return null} //在数据集中查找要素类 private IFeatureClass GetFcFromDataset(IFeatureDataset featDs, string className) { IFeatureClass featClassIFeatureClassContainer fcContainer = featDs as IFeatureClassContainerfor (int i = 0i <fcContainer.ClassCounti++) { featClass = fcContainer.get_Class(i)if (featClass.AliasName == className) { return featClass} } return null} //在要素类集合中查找要素类 private IFeatureClass GetFcFromEnumDataset(IEnumDataset enumDs, string className) { IFeatureClass featClass = enumDs.Next() as IFeatureClasswhile (featClass != null) { if (featClass.AliasName == className) { return featClass} featClass = enumDs.Next() as IFeatureClass} return null} //通过要素类名和数据集名在指定的工作空间中寻找要素类 public IFeatureClass FindClassByName(string className, string datasetName) { IWorkspace ws = FindWsByDefault()IFeatureClass featClass = FindClassByName(ws, className, datasetName)return featClass} 特别需要留意的是最后一个函数 FindClassByName(,,先是打开 SDE 的工作空间,在这 ) 个工作空间返回符合条件的要素集。通过这样的指向才能对 SDE 的 FeatureClass 进行写入 和删除的 *** 作。 可以把上述代码写成一个静态类, 这样就可以很方便的通过数据集名称和要 数集别名指向要编辑的 FeatureClass 了。 值得一提的是, 很多新手都没有养成这种良好的习惯, 就是先打开工作空间再进行数据的编 辑 ,即便是使用 shp 文件或是 MDB 数据。他们习惯性的使用 MapControl 去加载 MXD 文 件,然后在 MapControl 通过 MapControl.get_layer(index)的方法去获取图层,然后将其转为 IFeatureLayer 或是 IFeatureClass 进行 *** 作。 事实上,MXD 已经不用开发者写一句加载图层的代码就完成了对图层的加载,确实比较方 便。 但是它有很多看不见的 *** 作没有表现出来, 加载完数据之后就把工作空间给自动关闭了。 对于 shp 文件和 MDB 数据,通过读取地图控件的图层是可以直接达到写入的目的,但一旦 有用户进行 *** 作该图层文件就会被锁死,这就是不支持版本技术的表现。而 SDE 数据由于 存在版本(原理不多说了) ,因此有需要去确保数据的安全性和一致性,必须使用工作空间 的形式去打开。如果用读取 MapControl 图层的方法去获取 FeatureClass,实际上获取的是一 个没有打开的编辑 *** 作的 FeatureClass,在 ESRI 的帮助文档里面我们不难发现它是只读的, 就像在 ArcMap 里面没有用 Editor 执行 startEdit 一样。 2. 编辑 SDE 数据 利用上述的方法获取了 FeatureClass 后就可以用常规的方式对其进行编辑,如 delete()和 CreateFeature(),或是更改属性值。但是仍然会出现无法编辑数据的现象,这种现象通常提 示没有足够的授权去编辑数据,这就涉及到 AE 对 SDE 数据编辑的授权,也就是 gdbedite 的授权(主要是在 AE9.2 里面) 。 关于 GDBEdite 的授权,懒羊羊已经在之前发过一份比较完整的文档,但还是在这里再归纳 一下。 ArcEngine9.2 在用户许可上做了很大的改动,应用程序是强制初始化许可,也就是说必须使 用 LicenseControl 或 AO 接口初始化许可, 否则应用程序无法启动。 Engine9.1 未采取强制初 始化许可策略,而是应用程序创建时就初始化标准 Engine 许可。在一般情况下,我们会用 将 LicenseControl 拖放到主窗体上完成初始化。但当 Engine 程序需要使用 ArcGIS Engine Enterprise Geodatabase(以下简称 GDB Update)许可的时候,我们就往往会由于意识不到应 该使用该许可,以及无法正确的初始化该许可而陷入麻烦。 对于许可这东西,首先要学会看软件产品的购货单。下表是一份关于 ArcEngine9.2 的购货 单。 下面对 GDB update 许可进行讨论 1. 什么情况下需要 GDB Update 许可 当需要对 SDE 里数据进行编辑时,以及需要在 SDE 和 Personal Geodatabase 中创建复杂 ArcGIS 对象时,需要使用 GDB Update 许可。 对 SDE 里的数据编辑,很好理解,大致就是进行数据插入,删除,更新;对表添加、删除 和修改,表结构的变化(添加、删除列)等,因为这些动作都会造成后台数据库的写 *** 作。 对于 Personal Geodatabase,进行简单数据对象和编辑,包括创建、删除和修改普通表都是不 需要 GDB Update 许可的, 但对于复杂的 Geodatabse 对象的创建、 删除和修改, 则需要 GDB Update 许可,其中复杂的 Geodatabse 对象包括几何网络,网络分析模型,拓扑,关系类。 这也是为什么往往有写好了一个创建几何网络或拓扑的程序后,执行起来会被报“需要 Geodatabase Update 许可”的错。 2. 怎样初始化 GDB Update 许可 当我们意识到需要使用 Engine 的 GDB Update 许可时,怎样才能将它正确的初始化呢? Engine 给我们提供了两种初始化许可的方法: 1) 使用 LicenseControl 控件。将该控件拖放到主窗体之上,勾选适当的许可,并确保 程序启动该窗体可加载,就可以完成许可初始化。如下图: 2) 使用 IAoInitialize.Initialize 方法加入适当的参数进行初始化 下面是 C#的代码 private IAoInitialize m_AoInitialize = new AoInitializeClass()private void Form1_Load(object sender, EventArgs e) { m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCo deEngineGeoDB)} 在窗体加载的时候初始化 GDB 许可。 当然, 对于一个健壮的程序而言, 我们还需要在初始化之前先判断将被初始化的许可是否可 用,应先使用 IsProductCodeAvailable 方法进行判断,需要初始化扩展模块的许可,可使用 CheckOutExtension 方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12050760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存