现对鹰眼视图的更新。代码如下:
private void axMapControl1_OnFullExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnFullExtentUpdatedEvent e) {
//获取鹰眼图层
this.axMapControl2.AddLayer(this.GetOverviewLayer(this.axMapControl1.Map)); // 设置 MapControl 显示范围至数据的全局范围
this.axMapControl2.Extent = this.axMapControl1.FullExtent; // 刷新鹰眼控件地图
this.axMapControl2.Refresh(); }
本例的示例数据无特别要求,使用前面章节实例数据即可。运行程序,添加地图数据,可以在主视图进行相关操作,鹰眼视图同步响应,在鹰眼视图可以移动红线框可以同步更新主视图的视图范围,在鹰眼视图单击右键拉框可以重新绘制红线框,效果如下:
图 3鹰眼效果
1.3 MyGIS中添加鹰眼
在上一讲中的最后一节,我们创建了一个简单的GIS系统MyGIS,这里,我们讲鹰眼功能嵌入到我们的系统中。在这里我们对实现的思路做一个介绍,请您自己动手完善MyGIS。
首先需要修改一下MyGIS窗体的控件布局,我们讲鹰眼视图放到图层管理器的下方,需要在控件容器SpliterContainer1的Panel1中添加一个水平分隔的SpliterContainer,然后将图层管理器空间TOCControl和鹰眼视图MapControl分别置于上下的容器中,并将其属性Dock分别设为Fill。
另外,在此种窗体布局情况下,直接在TOCControl控件属性中设置伙伴控件无效,如
图所示。我们需要在MainForm的Load事件中为TOCControl设置伙伴控件为axMapControl1。添加代码如下:
private void Form1_Load(object sender, EventArgs e) {
//设置axTOCControl1的伙伴控件
this.axTOCControl1.SetBuddyControl(axMapControl1.Object); }
图 4 TOCControl控件属性中设置伙伴控件
然后依次添加本例中的代码,即可完成,运行效果如下图所示:
图 5 MyGIS中鹰眼的运行效果
1.4 小结
在本小节中,我们实现了鹰眼功能并讲鹰眼加入了MyGIS,这部分的重点是鹰眼视图和主视图之间的事件交互。推荐您仔细结合例子程序查看代码,如果需要获得进一步的信息,请查看帮助系统。如果您对这一小节的内容比较熟悉了,就可以开始学习本章最后一小节的内容了。在下一小节中,我们将尝试添加缓冲区分析功能。
ArcGIS Engine高级功能开发
2 缓冲区分析
缓冲区分析指为了识别某一地理实体或空间物体对其周围地物影响度而在其周围建立的具有一定宽度的区域,以确定哪些实体落在了被影响的区域范围之内。
缓冲区分析与缓冲区查询不同,缓冲区查询是不破坏原有空间目标的关系,只是检索到该缓冲区范围内涉及到的目标。而缓冲区分析是根据设定的距离条件对一类地物建立缓冲区多边形,存储到一个新的图层中。然后再将新的图层与需要进行缓冲区分析的图层进行叠置分析,得到所需要的结果。因此,缓冲区分析实际上进行了两步的操作,第一步是建立缓冲区图层,第二步是进行叠置剪裁分析。
缓冲区分析适用于点、线、面对象,如点状的居民点、线状的河流和面状的作物分布区等,只要地理实体能对周围一定区域形成影响即可使用这种分析方法。
图 6点、线、面的缓冲区分析
ArcGIS的ArcToolBox中的分析工具提供了缓冲区分析的功能,本节实习我们首先使用Geoprocessor方法实现一个简单的缓冲区分析功能,然后将缓冲区分析功能添加到我们的MyGIS项目中。
程序运行前首先需要在D盘下新建一个名为Temp的文件夹,存放叠置分析生成的文件。
2.1 Geoprocessor实现缓冲区分析
为了降低开发难度和提高开发效率,ArcGIS Engine中添加了GeoProcessor类,使用Geoprocessor能帮助用户直接实现一些简单的工具性的功能,所有在ArcToolBox中的功能,基本都可以用Geoprocessor编程实现。本节我们使用Geoprocessor实现缓冲区分析的功能。
2.1.1 添加控件
新建一个C#.Net项目,项目名称为Buffer,将Form1的名字设置为MainForm,并添加ToolbarControl 、MapControl、TOCControl、LicenceControl和Button等五个控件。并将ToolbarControl 、TOCControl的伙伴控件设为MapControl,Button控件的Name属性设定为btnBuffer,Text属性设定为“缓冲区分析”。控件布局效果如下图所示。
ArcGIS Engine高级功能开发
图 7控件布局效果
在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示。
图 8添加按钮
2.1.2 代码添加及解释
首先添加如下四个命名空间的引用。
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geoprocessor; using ESRI.ArcGIS.Geoprocessing; using ESRI.ArcGIS.esriSystem;
在使用Geoprocessor工具实现缓冲区分析时,需要首先定义一个Geoprocessor对象,因为命名空间“ESRI.ArcGIS.Geoprocessing”也包含Geoprocessor类,为了避免混淆,我们使用命
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ArcGIS - Engine二次开发 - 提高篇 - 图文(2)在线全文阅读。
相关推荐: