GIS软件设计程序说明.docx_第1页
GIS软件设计程序说明.docx_第2页
GIS软件设计程序说明.docx_第3页
GIS软件设计程序说明.docx_第4页
GIS软件设计程序说明.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GIS软件设计与实现程序说明组员:王兴平、邵 瑞 王平凯 班级: 测绘1103班 指导老师: 李光强 2015/1/5一、小组成员表:姓名学号工作内容评分王平凯0145110616资料查找与程序测试,借阅AE组件开发的相关教程邵 瑞0145110617软件功能设计,界面设计王兴平0145110620程序编写与调试二、程序功能概述本程序的功能有:1.实现一次加载多个shp文件;2.使用ITOCControl接口,对TOC控件中的图层显示顺序进行调整;3.实现鹰眼功能;以上为已经经过测试,实现了的功能,相关功能截图:1.软件设计界面2.加载shp文件3.图层顺序调整4.鹰眼功能程序相关代码:public Form1() InitializeComponent(); / / 声明窗体层全局变量 / ITOCControl mTOCControl; ILayer pMovelayer;/需要调整显示顺序的图层 int toIndex;/存放目标图层的索引 / / 实现同时加载多个shp文件 / / / private void LoadFile_Click(object sender, EventArgs e) OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = Shape file(*.shp)|*.shp; dlg.Title = 打开 Shape数据文档; dlg.Multiselect = true; /定义存放打开 IFeatureClass 的字符串数组 string FilePath; if (dlg.ShowDialog() = DialogResult.OK) FilePath = new stringdlg.FileNames.Length; FilePath = dlg.FileNames; if (FilePath.Length 0) string WorkSpacePath = System.IO.Path.GetDirectoryName(FilePath0); string ShapeFilePath = new stringFilePath.Length; /获得打开 IFeatureClass 的字符串数组 for (int i = 0; i FilePath.Length; i+) ShapeFilePathi = System.IO.Path.GetFileName(FilePathi); IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(WorkSpacePath, 0); IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; for (int i = 0; i ShapeFilePath.Length; i+) IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(ShapeFilePathi); IDataset pDataset = pFeatureClass as IDataset; IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = pDataset.Name; ILayer pLayer = pFeatureLayer as ILayer; this.axMapControl1.Map.AddLayer(pLayer); this.axMapControl2.Map.AddLayer(pLayer); / / 实现地图的鹰眼功能 / / / private void axMapControl1_OnMapReplaced(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e) IMap pMap; pMap = axMapControl1.Map; for (int i = 0; i pMap.LayerCount; i+) axMapControl2.Map.AddLayer(pMap.get_Layer(i); axMapControl2.Extent = axMapControl2.FullExtent; /在鹰眼中移动红色矩形框时,axMapControl2中的地图范围要发生相应的变化 private void axMapControl2_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) if (e.button = 1)/探测鼠标左键 IPoint pPt = new PointClass(); pPt.X = e.mapX; pPt.Y = e.mapY; IEnvelope pEnvelope = axMapControl1.Extent as IEnvelope; pEnvelope.CenterAt(pPt); axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); else if (e.button = 2)/鼠标右键功能:范围显示 IEnvelope pEnvelope = axMapControl2.TrackRectangle(); axMapControl1.Extent = pEnvelope; axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); / / 当主视图的显示范围发生变化时,会触发空间的OnExtentUpdated事件 / / / private void axMapControl2_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) if (e.button != 1) return; IPoint pPt = new PointClass(); pPt.X = e.mapX; pPt.Y = e.mapY; axMapControl1.CenterAt(pPt); axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); / / 绘制鹰眼中红色矩形框 / / / private void axMapControl1_OnExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e) IGraphicsContainer pGraphicsContainer = axMapControl2.Map as IGraphicsContainer; IActiveView pAv = pGraphicsContainer as IActiveView; /在绘制前,清除axMapControl2中的任何图形 pGraphicsContainer.DeleteAllElements(); IRectangleElement pRecElement = new RectangleElementClass(); IElement pEle = pRecElement as IElement; IEnvelope pEnv; pEnv = e.newEnvelope as IEnvelope; pEle.Geometry = pEnv; /设置颜色 IRgbColor pColor = new RgbColorClass(); pColor.Red = 200; pColor.Green = 0; pColor.Blue = 0; pColor.Transparency = 255; /产生一个线符号对象 ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); pLineSymbol.Width = 2; pLineSymbol.Color = pColor; /设置填充符号的属性 IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); /设置透明颜色 pColor.Transparency = 0; pFillSymbol.Color = pColor; pFillSymbol.Outline = pLineSymbol; IFillShapeElement pFillShapeElement = pRecElement as IFillShapeElement; pFillShapeElement.Symbol = pFillSymbol; pGraphicsContainer.AddElement(pEle, 0); axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); /在窗体Form1_Load事件中对mTOCControl进行实例化 private void Form1_Load(object sender, EventArgs e) mTOCControl = axTOCControl1.Object as ITOCControl; / / 实现axTOCControl的图层显示顺序调整 / / / private void axTOCControl1_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e) esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone; if (e.button = 1) IBasicMap map = null; ILayer layer = null; object other = null; object index = null; mTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index); if (layer is IAnnotationSublayer) return; else pMovelayer = layer; /图层顺序的调整 private void axTOCControl1_OnMouseUp(object sender, ITOCControlEvents_OnMouseUpEvent e) if (e.button = 1) esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone; IBasicMap map = null; ILayer layer = null; object other = null; object index = null; mTOCControl.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index); IMap pMap = axMapControl1.ActiveView.FocusMap; if (item = esriTOCControlItem.esriTOCControlItemLayer | layer != null) ; if (pMovelayer != l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论