第6章_ArcGIS Engine二次开发(矢量数据空间分析)

时间:2025-07-09

介绍ArcGIS Engine二次开发(矢量数据空间分析)

第6章 ArcGIS Engine二次开发

(矢量数据空间分析)

介绍ArcGIS Engine二次开发(矢量数据空间分析)

在这一部分中,您将学习到鹰眼、缓冲区分析、叠置分析 、地 图编辑及网络分析等ArcGIS Engine二次开发实例。

介绍ArcGIS Engine二次开发(矢量数据空间分析)

1. 鹰眼 鹰眼功能是 GIS 的主要功能之一,当地图范围很大时,它可以 很好的为用户指明当前地图的范围。在本小节中我们将学习如 何制作这种鹰眼。

介绍ArcGIS Engine二次开发(矢量数据空间分析)

1. 鹰眼 1.1 添加控件及代码 新建一个 http://www.77cn.com.cn 项目,在其中 Form1添加如下控件: 1. MenuStrip 2. OpenFileDialog 3. ToolbarControl 4.MapControl 5.TOCControl ,如下图所示:

介绍ArcGIS Engine二次开发(矢量数据空间分析)

为 ToolbarControl 添加地图浏览的功能按钮,如放大、缩 小、漫游等 为 MenuStrip中添加两个菜单

介绍ArcGIS Engine二次开发(矢量数据空间分析)

双击菜单栏中的“打开 MXD 文件”添加打开代码。 Dim sFilePath As String '调用OpenFileDialog,获取文件路径并打开地图文件 OpenFileDialog1.FileName = "" OpenFileDialog1.Title = "打开地图文件" OpenFileDialog1.Filter = "MapDocument (*.mxd)|*.mxd" If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then sFilePath = OpenFileDialog1.FileName

FilePath = sFilePathIf Not sFilePath = "" Then Me.AxMapControl1.LoadMxFile(sFilePath) End If End If Me.AxMapControl1.Extent = Me.AxMapControl1.FullExtent

介绍ArcGIS Engine二次开发(矢量数据空间分析)

在 MapControl 的事件中选择 OnExtentUpdated事件并添加代码:

Private Sub AxMapControl1_OnExtentUpdated(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent) Handles AxMapControl1.OnExtentUpdated Dim pEnv As IEnvelope pEnv = e.newEnvelope Dim pGra As IGraphicsContainer Dim pAv As IActiveView pGra = Form2.AxMapControl1.Map pAv = pGra

介绍ArcGIS Engine二次开发(矢量数据空间分析)

pGra.DeleteAllElements() Dim pRectangleEle As IRectangleElement pRectangleEle = New RectangleElement Dim pEle As IElement pEle = pRectangleEle pEle.Geometry = pEnv

Dim pColor As IRgbColor pColor = New RgbColor pColor.RGB = RGB(255, 0, 0) pColor.Transparency = 255

Dim pOutline As ILineSymbol pOutline = New SimpleLineSymbol pOutline.Width = 1

pOutline.Color = pColor

pColor = New RgbColor pColor.RGB = RGB(255, 0, 0)

pColor.Transparency = 0

介绍ArcGIS Engine二次开发(矢量数据空间分析)

Dim pFillSymbol As IFillSymbol pFillSymbol = New SimpleFillSymbol pFillSymbol.Color = pColor pFillSymbol.Outline = pOutline Dim pFillShapeEle As IFillShapeElement

pFillShapeEle = pElepFillShapeEle.Symbol = pFillSymbol pGra.AddElement(pFillShapeEle, 0)

pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)End Sub

介绍ArcGIS Engine二次开发(矢量数据空间分析)

为工程新建一个窗体 Form2,在 Form2中添加第二个 MapControl 控件 并添加如下引用: Imports ESRI.ArcGIS.Geometry 在 Form2的 FormLoad 事件中为 Form2的 MapControl 控件添加地 图数据Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Form1.FilePath = "" ThenExit Sub End If Me.AxMapControl1.LoadMxFile(Form1.FilePath) Me.AxMapControl1.Extent = Me.AxMapControl1.FullExtent End Sub

介绍ArcGIS Engine二次开发(矢量数据空间分析)

为 Form2 添加 OnMouseDown 事件,并在实践中添加如下代

码:Private Sub AxMapControl1_OnMouseDown(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent) Handles AxMapControl1.OnMouseDown Dim pPt As IPoint Dim pEnv As IEnvelope pPt = New Point pPt.PutCoords(e.mapX, e.mapY) '改变主控件的视图范围 pEnv = Form1.AxMapControl1.Extent pEnv.CenterAt(pPt)

Form1.AxMapControl1.Extent = pEnvEnd Sub

介绍ArcGIS Engine二次开发(矢量数据空间分析)

双击 Form1菜单栏中的“打开略缩图”添加如下代码:

Form2.Show()运行,添加地图数据得到如下效果:

介绍ArcGIS Engine二次开发(矢量数据空间分析)

1.3 小结 在本小节中,我们实现了鹰眼功能,这部分的重点是鹰 眼视图和主视图之间的事件交互。推荐您仔细结合例子程 序查看代码,如果需要获得进一步的信息,请查看帮助系 统。如果您对这一小节的内容比较熟悉了,就可以开始学 习本章最后一小节的内容了。在下一小节中,我们将尝试 添加缓冲区分析功能。

介绍ArcGIS Engine二次开发(矢量数据空间分析)

2. 缓冲区分析

缓冲区分析指为了识别某一地理实体或空间物体对其周围地 物影响度而在其周围建立的具有一定宽度的区域,以确定哪 些实体落在了被影响的区域范围之内。下面是一个简单的缓 冲区分析的示例:

介绍ArcGIS Engine二次开发(矢量数据空间分析)

2.1 添加控件新建一个 http://www.77cn.com.cn 项目,向 Form1 中添加如下控件:MenuStrip、 ToolbarControl 、MapControl 和 LicenseControl ,结果见上鹰 眼程序。为 ToolbarControl 添加地图浏览的功能按钮,包括添 加数据、添加图层、放大、缩小、漫游等 首先通过 Generic 下设置 Buddy 项,将 ToolbarControl 和 MapControl 绑定,如下图:

介绍ArcGIS Engine二次开发(矢量数据空间分析)

其它部分不变,然后在 Items选项 …… 此处隐藏:1793字,全部文档内容请下载后查看。喜欢就下载吧 ……

第6章_ArcGIS Engine二次开发(矢量数据空间分析).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219