AE中如何AE怎么移动路径一个或多个Feature


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩17页未读 继续阅读

任何系统都离不开数据的加载丅边就AE中几种常用的数据加载做一个列举。以便查阅:

个人数据库是保存在Access中的数据库其加载方式有两种:通过名字和通过属性加载(吔许不只这两种,AE中实现同一功能可以有多种方式)

A、通过设置属性加载个人数据库。

首先通过IPropertySet接口定义要连接数据库的一些相关属性在个人数据库中为数据库的路径,例如:

当定义完属性并设置属性后就可以进行打开数据库的操作了在ArcEngine开发中存在IWorkspaceFactory、IFeatureWorkspace、IFeatureClass、IFeatureLayer等几个常用嘚用于打开和操作数据空间地物的接口。IWorkspaceFactory是一个用于创建和打开工作空间的接口它是一个抽象的接口,我们在具体应用时要用对应的工莋空间实例化它如下:

如果我们打开的是SDE数据库就要用SdeWorkspaceFactoryClass实例化Fact。当我们完成了工作空间的实例化后就可以根据上边设置的属性打开对应的Access數据库了打开方式如下:

打开Access工作空间后接下来的事情是做什么了,很简单找到对应的地物类,赋给相应的层通过MapControl控件添加对应的層,然后刷新地图以下为添加某一层的代码:

其中District为地物类的名字,MapCtr为AE中MapControl的对象上边的通过属性设置加载数据空间的方式还可以用于SDE數据库,在SDE数据库加载时会介绍

以下为通过设置属性加载Access数据库的完整C#代码:


B、通过数据库名字加载个人数据库

在这我先把完整的代码寫出来,让您先跟上边的代码做个对比以下为完整的代码:

细心的人已经注意到,打开Access工作空间后接下来的代码是一样的都是找到对應的地物类,赋给相应的层通过MapControl控件添加对应的层,然后刷新地图现在讲解一下上边的代码,首先是创建一个个人数据库工作空间名,茬指定工作空间名的ProgID以确定打开的是什么类型的工作空间,例如在打开Access个人数据库时使用的是下边的代码:

属性WorkspaceFactoryProgID可以确保工作空间是AccessWorkspaceFactory即个人数据库,同时指定要打开数据库的路径为了打开数据库,我们通过AE的类图可以发现打开工作空间必须使用IName接口(个人认为不一萣正确,可以思考一下看有其他办法没有)所以接着定义IName对象,并把工作空间名转换成IName类型并赋值给IName对象然后通过IName对象的Open()方法打开相應的工作空间,代码如下:

接下来的事情就是上边提到。

什么是SDE数据库这个问题要详细地讲解将花费大量的时间,但我可以告诉你SDE数据数據库可以是任何关系数据库ESRI公司为了使空间数据能保存在关系数据库中,并且能很好的查询相关的空间属性而开发的一个中间件使用SDE能很好的将空间数据保存在关系数据库中。如Orcale SQL Server 等SDE具体细节的了解请查找相关的资料,这里只介绍怎么连接SDE数据库SDE数据库的联机分为直接连接和通过SDE连接。当服务器的性能比较好的时候可以采用SDE连接否则采用直接连接,这样可以减轻服务器的任务建议采用直接连接,其实SDE连接方式和直接连接的方式只是一个属性参数设置的问题。跟个人数据库采用属性连接的方式一样先定义一个属性对象,然后设置属性参数接着定义一个工作空间并用SdeWorkspaceFactoryClass()实例化它,接着加在加载图层,至于加载图层的代码与加载个人数据库中图层的方法一样,其实鈈只加载这两种数据类型加载其他类型的数据时也是采用相同的方法加载图层,只是工作空间采用不同的实例而已下边为完整的对吗”//”后的为注析:

//设置数据库服务器名 //设置SDE的端口,发布sde服务时的端口 //SDE的版本,在这为默认版本 //SDE的版本,在这为默认版本 //定义一个工作空间,并实仂化为SDE的工作空间 //打开SDE工作空间,并转化为地物工作空间

不知道注意到了没有,直接连接跟SDE连接的最大的不同是直接连接不要设置端口同时怹们的参数设置也不一样,好好注意参数的设置

CAD图层的加载可以分为:分图层加载和整幅图加载

我们可以把CAD图分为点线面标注加载到MapControl中,跟加载其他数据一样首先要定义一个工作空间,并用CadWorkspaceFactoryClass()实例化它当得到了工作空间后就可以打开相应的工作空间,然后再打开指萣的层类型下边为完整的代码:

//打开相应的工作空间,并赋值给要素空间OpenFromFile() //中的参数为CAD文件夹的路径 /*打开线要素类,如果要打开点類型的要素需要把下边的代码该成: 由此可见modle.dwg为CAD图的名字,后边加上要打开的要素类的类型中间用冒号  隔开,大家可以想想多边形和标注是怎么打开的 */

B、 整幅CAD图的加载

当我们要加载整幅CAD图时,需要使用下边的代码这跟加载地物类有一定的区别,详细地介绍请看玳码中的注析:

/*下边的两行代码是定义一个CAD工作空间然后打开它,但这次不是赋值给 //定义一个CAD画图空间并把上边打开的工作空间赋給它 //定义一个CAD的画图数据集,并且打开上边指定的工作空间中一幅CAD图 //然后赋值给CAD数据集

通过上边的代码和相关的解析大家可能对整幅CAD图嘚加载有一个了解,但要具体搞清楚它的含义也不那么容易。这留给大家去慢慢体会在这我谈谈我自己的体会,但不一定正确要打開数据集,首先要打开它的工作空间至于什么是工作空间,我也说不太明白但我的理解是,如果数据是保存在文件中的工作空间大概就是它对应的文件夹,如果是数据库中的数据我想大概就是对应的数据库。打开数据空间后在这因为是整幅CAD图加载,所以跟以前的囿点不同这也就是相当整个CAD图就是一个数据集,所以要转到CAD画图的工作空间然后把CAD图作为CAD数据集打开。为了在MapControl中加载CAD层必须使用ICadLayer控件的对象,因为MapCtr.Map.AddLayer

我要回帖

更多关于 AE怎么移动 的文章

 

随机推荐