ImageVerifierCode 换一换
格式:DOCX , 页数:103 ,大小:109.43KB ,
资源ID:19881199      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19881199.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ArcgisEngine开发总结集锦Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ArcgisEngine开发总结集锦Word文档下载推荐.docx

1、ESRI.ArcGIS.esriSystem.IpropertySet Proset = new ESRI.ArcGIS.esriSystem.PropertySetClass();/属性集 ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact;/工作空间仓库 ESRI.ArcGIS.Geodatabase.IWorkspace Workspace;/工作空间 Proset.SetProperty(Server,服务器名);/服务器名Instance端口/实例化端口user用户名/SDE用户名password密码/密码versionsde.DEFAULT

2、/连接版本Fact = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();/实例化为SDE工作空间仓库Workspace = Fact.Open(Proset,Int32.Parse(this.Handle.ToString();/填入属性集ESRI.ArcGIS.Geodatabase.IFeatureWorkspace FeatureWorkspace;FeatureWorkspace = Workspace as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace;/传递给Feature工作

3、空间 ESRI.ArcGIS.Geodatabase.IFeatureClass FeatureClass; FeatureClass = FeatureWorkspace.OpenFeatureClass(SDE.BBBB/填充所需Feature集合 ESRI.ArcGIS.Carto.FeatureLayer FLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass(); FLayer.FeatureClass = FeatureClass;/将Feature加载到图层 axMapControl1.Map.AddLayer(FLayer);/加载图层

4、 axMapControl1.Update();/更新空白区域 axMapControl1.Refresh();/刷新地图视窗private void Form1_Closed(object sender, System.EventArgs e) ESRI.ArcGIS.esriSystem.IAoInitialize aoi = new ESRI.ArcGIS.esriSystem.AoInitializeClass(); aoi.Shutdown();private void button1_Click(object sender, System.EventArgs e) IGraphic

5、sContainerSelect GraphicsContainerSelect = (IGraphicsContainerSelect)axMapControl1.Map; if(GraphicsContainerSelect.ElementSelectionCount =0)/判断是否选中图斑 MessageBox.Show(请选中欲导入图斑! return; IWorkspaceEdit WorkspaceEdit; IFeatureLayer FeatureLayer; IFeatureClass FeatureClass; IFeature Feature; IDataset Dat

6、aset; FeatureLayer = (IFeatureLayer)this.axMapControl1.get_Layer(0);/选中导入图层 FeatureClass = FeatureLayer.FeatureClass;/该图层的feature集 Dataset = (IDataset)FeatureClass;/该图层的数据集 WorkspaceEdit = (IWorkspaceEdit)Dataset.Workspace;/关联到编辑空间 WorkspaceEdit.StartEditing(true);/使之可编辑 WorkspaceEdit.StartEditOpera

7、tion();/开始编辑 Feature = FeatureClass.CreateFeature();/创建空feature Feature.Shape = GraphicsContainerSelect.SelectedElement(0).Geometry;/仅导入最新选中图斑,即多选时只有一个可以导入 Feature.Store(); WorkspaceEdit.StopEditOperation(); WorkspaceEdit.StopEditing(true);/结束编辑并保存 IGraphicsContainer GraphicsContainer = (IGraphicsCo

8、ntainer)GraphicsContainerSelect; GraphicsContainer.DeleteAllElements();/删除graphic图层 axMapControl1.ActiveView.Refresh();/刷新当前视图ok3. ArcEngine中对Feature的编辑对Feature的编辑分为以下几个部分1.新建2.修改3.删除涉及到的接口有以下几个IWorkspaceEditIFeatureClassIFeatureCursorIFeature其中IWorkspaceEdit用于启动编辑 开始编辑操作 结束编辑操作 结束编辑IFeatureClass 是数

9、据的所在地IFeatureCursor 是一个游标 提供访问数据的接口和修改数据的接口IFeature 是对象的代表 我们要编辑的目标编辑的过程如下:1.添加一个Feature/假设space是一个IWorkspaceEdit/参数表示是否需要使用Undo/Redo功能,该功能的粒度是EditOperator.spaceEdit.StartEditing(false);spaceEdit.StartEditOperator();/添加一个FeatureIFeature newFea=feaClass.createFeature();/为Feature 添加属性 设置图形newFea.Store

10、();/保存属性和图形spaceEdit.StopEditOperator();/结束编辑操作/结束编辑过程/参数表示是否保存编辑spaceEdit.StopEditing(true);2.添加多个Feature 添加多个Feature也可以向上面一样 使用多次就可以了 当时也可以使用IFeatureCursor来添加数据3.修改Feature 添加Feature中的修改属性和图形部分就是 每次修改后一定要调用Store方法 这样变化才可以保存下来4.删除 IFeature 有一个方法Delete 可以用于删除 当时经过测试发现对Shapefile 会抛出异常来。 IFeatureCuror有

11、一个DeleteFeature方法 可以用来删除当前的Feature ,经测试 对所有的数据源类型都可以使用。 注意事项 1.不能设置Feature的OID 2.不能设置Feature的Area 3.不能设置Feature的Lenght 4.不能设置Feature的Shape字段,需要调用单独的方法来给Feature关联几何图形。4. Feature的概念 Feature是二次开发中最常用的对象,feature是featureclass中一个记录,从object中派生出来的,因此也具有属性和方法,object又是从row中派生的,所以featureclass其实一张表,featured就是表中

12、的一条记录,feature可以保存空间数据对象,要素中的几何型体对象定义了要素的类型,它可以保存的几何型体对象有点、点集、多边形、多义线。这些都是些简单的要素对象,在有些情况下要素还可以参与拓扑、网络运算。Feature相关接口 Feature有派生出很多类,如:networkfeature、rastercatalogfeature、coverageannotationfeature、annotationfeature、dimensionfeature。feature的主要接口是Ifeature,其中的Extent用来返回要素对象的包络线,显示要素的空间范围;Featuretype返回要素的类

13、型;Shape返回要素的几何型体对象;ShapeCopy得到几何型体对象的一个拷贝。IfeatureBuffer中的Shape得到缓冲要素的几何型体对象IfeatureEdit中MoveSet、RotateSet、DeleteSet分别是移动、旋转、删除一个或者是多个要素组成的要素集上。Split主要是用来分割几何型体的,通过点分割线,通过多义线分割多边形,分割后旧的被删除,新的要素自动产生。因为每个要素都有对应的属性,要素改变了,其对应的属性也相应的要改变。Splitattributes就是用来分割要素属性字段中的值。该方法可以在Split方法执行后自动执行。IfeatureDraw中的In

14、validArea属性得到一个绘画的区域。Draw在显示设备上绘制要素IfeatureChanges中OriginalShape得到要素的最初几何类型,ShapeChanged指示要素的几何类型是否改变。IfeatureSimplify中SimplifyGeometry按照该元素的拓扑规则进行拓扑一致5. 如何实现经度纬度到平面坐标的相互转换?(转载)分类:WebGIS网络地理信息系统研究现在好多人在使用ArcObject的时候都可能需要作经纬度和平面坐标的相互转换。由于经纬度是球面坐标,平面坐标是X-Y的笛卡尔坐标系统,所以这是一个看起来比较难的问题。 好多人一上来就搬出地图学、地图投影学或

15、者测绘学中的投影公式(如高斯投影 或 墨卡托投影),又是基准坐标又是角度的搞的人头都大了。实际上要想实现这个功能非常easy。 ARC Engine中的IPoint就可以进行投影和反投影运算了。投影过程(C#):/flatref 投影的坐标系统,这里的54013是世界投影,世界投影所有经纬度都可以转换为平面坐标,但是由于投影面积大失真也会比较大(相当于把整个地球劈成一片片的,然后拉伸最后贴到平面上,失真当然大了)。当然也可以选择精度更高的平面如:esriSRProjCS_Beijing1954GK_23N对应数值21483仅仅把北京附近的地球平面拉伸铺在平面上,由于投影面积变小,所以投影经度提

16、高。但是由于面积变小,所以有些经度纬度不能转换,比如所美国的精度纬度用北京投影就投不了。flatref = pfactory.CreateProjectedCoordinateSystem(54013);/没什么说的,标准大地经纬度,可以将X-Y逆投影为经度和纬度earthref = pfactory.CreateGeographicCoordinateSystem(int)esriSRGeoCSType.esriSRGeoCS_NAD1983);/ 将经纬度点转换为平面坐标。private IPoint GetProject(double x, double y)IPoint pt = ne

17、w PointClass();pt.PutCoords(x, y);IGeometry geo = (IGeometry)pt;geo.SpatialReference = earthref;geo.Project(flatref);return pt;/ 将平面坐标转换为经纬度。private IPoint GetGeo(double x, double y)geo.SpatialReference = flatref;geo.Project(earthref);double xx = pt.X;实际上IPoint的投影和任何地图都没什么大关系,完全可以不用地图,直接调用IPoint进行投影

18、的转换 6. ArcEngine中使用上下左右键移动地图功能的实现/闪烁目标 public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap) IActiveView iActiveView = iMap as IActiveView; if (iActiveView != null) iActiveView.ScreenDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache); /根据几何类型调用不同的过程 swi

19、tch (iFeature.Shape.GeometryType) case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); case esriGeometryType.esriGeometryPoi

20、nt: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); default: iActiveView.ScreenDisplay.FinishDrawing(); /闪烁线 static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry) ISimpleLineSymbol iLineSymbol; ISymbol iSymbol; IRgbColor iRgbColor; iLineS

21、ymbol = new SimpleLineSymbol(); iLineSymbol.Width = 4; iRgbColor = new RgbColor(); iRgbColor.Red = 255; iLineSymbol.Color = iRgbColor; iSymbol = (ISymbol)iLineSymbol; iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; mapControl.FlashShape(iGeometry, 3, 200, iSymbol); /闪烁面 static void FlashPolygon(Ax

22、MapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry) ISimpleFillSymbol iFillSymbol; iFillSymbol = new SimpleFillSymbol(); iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; iFillSymbol.Outline.Width = 12; iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb();

23、 iFillSymbol.Color = iRgbColor; iSymbol = (ISymbol)iFillSymbol; iScreenDisplay.SetSymbol(iSymbol); /闪烁点 static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry) ISimpleMarkerSymbol iMarkerSymbol; iMarkerSymbol = new SimpleMarkerSymbol(); iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle; iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).To

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1