AE开发实例代码总结Word下载.docx
- 文档编号:16095745
- 上传时间:2022-11-19
- 格式:DOCX
- 页数:35
- 大小:476.01KB
AE开发实例代码总结Word下载.docx
《AE开发实例代码总结Word下载.docx》由会员分享,可在线阅读,更多相关《AE开发实例代码总结Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
IWorkspaceFactory是一个用于创建和打开工作空间的接口,它是一个抽象的接口,我们在具体应用时要用对应的工作空间实例化它,如下:
IWorkspaceFactoryFact=newAccessWorkspaceFactoryClass();
如果我们打开的是SDE数据库就要用SdeWorkspaceFactoryClass实例化Fact。
当我们完成了工作空间的实例化后就可以根据上边设置的属性打开对应的Access数据库了。
打开方式如下:
IFeatureWorkspaceWorkspace=Fact.Open(Propset,0)asIFeatureWorkspace;
打开Access工作空间后接下来的事情是做什么了,很简单,找到对应的地物类,赋给相应的层,通过MapControl控件添加对应的层,然后刷新地图。
以下为添加某一层的代码:
IFeatureClassFcls=Workspace.OpenFeatureClass("
District"
);
//找到对应的地物类
IFeatureLayerFly=newFeatureLayerClass();
//建立新图层
Fly.FeatureClass=Fcls;
//将地物赋给相应的层
MapCtr.Map.AddLayer(Fly);
//添加层
MapCtr.ActiveView.Refresh();
//刷新地图
其中District为地物类的名字,MapCtr为AE中MapControl的对象。
上边的通过属性设置加载数据空间的方式还可以用于SDE数据库,在SDE数据库加载时会介绍。
以下为通过设置属性加载Access数据库的完整C#代码:
publicvoidAddAccessDBByPro()
{
IPropertySetPropset=newPropertySetClass();
Propset.SetProperty("
DATABASE"
@"
D:
\test\Ao\data\sh\MapData.mdb"
);
IFeatureWorkspaceWorkspace=Fact.Open(Propset,0)asIFeatureWorkspace;
IFeatureClassFcls=Workspace.OpenFeatureClass("
IFeatureLayerFly=newFeatureLayerClass();
Fly.FeatureClass=Fcls;
MapCtr.Map.AddLayer(Fly);
}
B、通过数据库名字加载个人数据库
publicvoidAddAccessDBByName()
{
IworkspaceNamepWorkspaceName=newWorkspaceNameClass();
pWorkspaceName.WorkspaceFactoryProgID=“esriDataSourcesGDB.AccessWorkspaceFactory”;
pWorkspaceName.PathName=@“D:
\test\Ao\data\sh\MapData.mdb”;
INamen=pWorkspaceNameasIName;
IFeatureWorkspaceWorkspace=n.Open()asIFeatureWorkspace;
MapCtr.Map.AddLayer(Fly);
首先创建一个个人数据库工作空间名,再指定工作空间名的ProgID,以确定打开的是什么类型的工作空间,例如在打开Access个人数据库时,使用下面代码;
属性WorkspaceFactoryProgID可以确保工作空间是AccessWorkspaceFactory,即个人数据库,同时要指定打开数据库路径。
为了打开数据库,打开工作空间必须使用IName接口(思考有没有其他办法),,所以接着定义IName、对象,并把工作空间名转换成IName类型,并赋值给IName对象,然后通过IName对象的open方法打开相应的工作空间,代码如下:
2、AE开发编辑功能
数据编辑问题
1.需要了解的概念
长事务短事务编辑空间抽象类,类,和组件对象类
2、最基本的添加点线面功能
添加点(方法有多种,基本思路一样,只是少量的接口有变化)
通过FeatureClass的CreatFeature函数来添加地物。
publicvoidAddPointByStore()
//得到要添加地物的图层
IFeatureLayerl=MapCtr.Map.get_Layer(0)asIFeatureLayer;
//定义一个地物类,把要编辑的图层转化为定义的地物类
IFeatureClassfc=l.FeatureClass;
//先定义一个编辑的工作空间,然后把它转化为数据集,最后转化为编辑工作空间,
IWorkspaceEditw=(fcasIDataset).WorkspaceasIWorkspaceEdit;
IFeaturef;
IPointp;
//开始事务操作
w.StartEditing(false);
//////?
?
//开始编辑
w.StartEditOperation();
for(inti=0;
i<
100;
i++)
//创建一个地物
f=fc.CreateFeature();
p=newPointClass();
//设置点的坐标
p.PutCoord(i,i);
//确定图形类型
f.Shape=p;
//保存地物
f.Store()
//结束编辑
w.StopEditOperation();
//结束事务操作
w.StopEditing(true);
二、添加线
方法跟添加点一样,不同的只是地物类型不一样而已,
AE中各类库的介绍
1、问题一:
什么是UI组件?
2、类库介绍
空间拓扑运算
1、高级几何对象:
点(point)、多点(multipoint)、线(polyline)、面(polygon)、multipatch等。
(multipatch:
多片,三维地形图中的地图符号包括点状符号、线状符号、面状符号、体状符号以及多片(MultiPatch)符号等)
2、拓扑:
空间拓扑描述的事自然界地理对象的空间位置关系,即相邻、重合、连通等。
是在同一个要素集下的要素类之间的关系的集合,所以要参与一个拓扑的所有要素类,必须在同一个要素集内(也就是具有同一个空间参考),这样进行的拓扑检查才是精确的。
3、一个要素集可以有多个拓扑,但每个要素类最多只能参与一个拓扑,一个拓扑中可以定义多个规则,是地理对象空间属性的一部分,在目前ESRI提供的数据存储方式中,Coverage和GeoDatabase能够建立拓扑,而Shape格式的数据不能建立拓扑。
4、esriTRTAny————任何拓扑规则,查询拓扑的时候用(ESRI提供的拓扑关系)
5、AE中提供了ITopologicalOperator接口用于拓扑运算,ITopologicalOperator接口用来通过对已存在的几何对象做空间拓扑运算,以产生新的集合对象。
ITopologicalOperator接口在GIS开发中的使用非常广泛,通常GIS系统中的缓冲区分析、裁剪几何图形、几何图形差分操作、几何图形合并操作等都需要此接口。
Boundary方法用于几何图形对象的边界。
Polygon的几何对象的Boundary是组成它的Polyline几何对象,Polyline几何对象的Boundary是组成它的顶点Point几何对象,而Point的几何对象的Boundary是空对象。
Buffer用于集合对象缓冲区分析拓扑操作,该方法用于给一个高级几何对象产生一个缓冲区,无论是Polygon、Polyline、还是Point,他们的缓冲区都是具有面积的几何对象。
Clip用于对几何对象进行裁剪空间拓扑操作。
Clip方法可用一个Envelope对象对一个几何对象进行裁剪,结果是几何对象被Envelope对象所包围的部分。
ConstructUion用于将多个枚举对象与单个几何对象合并为单个几何对象。
ConvexHull用于构建几何对象的凸多边形。
ConvexHull方法用于产生一个几何图形的最小的边框凸多边形(没有凹面包含几何图形的最小多边形)
Cut用于切割几何对象,不支持GeometryBags几何对象,它可以指定一条切割曲线和一个几何图形,经过切割运算后把几何图形分为左右两部分,左右两部分是相对曲线的方向而言的。
点与多点不可被分割。
Polyline和Polygon只有与切割曲线相交时才能执行Cut方法。
Difference用于从一个几何图形中减去其与另一个图形相交的部分,产生两个几何对象的差集。
Intersection方法用于两个同纬度几何对象的交集部分。
Simplify用于使几何对象拓扑一致。
SymmetricDifference对称差分可将两个几何图形的并集部分减去两个几何图形交集的部分。
开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AE 开发 实例 代码 总结