第一范文网 - 专业文章范例文档资料分享平台

ArcGIS_Engine开发实例教程 长江三峡大学(2)

来源:用户分享 时间:2022-04-19 本文由暗香疏影 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

i.PutCoords(100, 100)

AxMapControl1.CenterAt(i)

AxMapControl1.Refresh()

其中i.PutCoords(100, 100)是设置中心在(100,100),若该点为某个数据的中心,则该功能就是以该数据为中心。

7、地图放大缩小等

放大、缩小、打开文件、保存文件等ArcMap中长用的命令在ArcGIS Engine 中也可以找到对应的命令,这些命令都在controls库中。所以首先必须引用ESRI.ArcGIS.Controls。下面以放大为例:

在项目中添加ESRI.ArcGIS.Controls的引用,然后在全局定义前引用,如下:

Imports ESRI.ArcGIS.Controls

在放大按钮上添加如下代码:

Private Sub ZoomIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZoomIn.Click

Dim zoomin As ControlsMapZoomInTool = New

第10 页共119 页

ArcGIS Engine 开发实例教程 土木水电学院3S 实验室 第 11 页 共 119 页 ControlsMapZoomInTool()

zoomin.OnCreate(AxMapControl1.Object)

AxMapControl1.CurrentTool = zoomin

End Sub

其中Dim zoomin As ControlsMapZoomInTool 是定义地图放大命令,zoomin.OnCreate 是创建放大命令,AxMapControl1.CurrentTool = zoomin 是使Map 控件的当前命令按钮是zoomin 。

同理,还可以创建缩小、打开文件、保存文件等等。值得注意的是,有的时候是需要点击命令,有时候是使Map 控件的当前命令为该命令。下面是各主要命令所对应的类:

功能 类 事件

放大 ControlsMapZoomInTool 设置

CurrentTool

缩小 ControlsMapZoomOutTool 设置

CurrentTool

打开文件 ControlsOpenDocCommand OnClick() 添加数据 ControlsAddDataCommand OnClick() 全图 ControlsMapFullExtentCommand OnClick() 查找 ControlsMapFindCommand OnClick()

属性工具 ControlsMapIdentifyTool 设置

CurrentTool

选择Feature ControlsSelectFeaturesTool 设置

CurrentTool

清除选择 ControlsClearSelectionCommand OnClick() 开始编辑 ControlsEditingStartCommand OnClick() 保存编辑 ControlsEditingSaveCommand OnClick() 停止编辑 ControlsEditingStopCommand OnClick()

编辑工具 ControlsEditingEditTool 设置

CurrentTool

属性编辑命令

ControlsEditingAttributeCommand OnClick() 测量工具 ControlsMapMeasureTool 设置

CurrentTool

创建路径(网络分析)

ControlsNetworkAnalystRouteCommand OnClick() 创建路径点 ControlsNetworkAnalystCreateLocationTool 设置

CurrentTool

最短路径查询

ControlsNetworkAnalystSolveCommand OnClick() Scene 缩小 ControlsSceneExpandFOVCommand OnClick()

当然,还有很多很多其他的命令。从上面的列表比较我们也可以看出,一般来说,如果类的后缀是Command ,则用OnClick 方法;如果是Tool ,则设置Map 的CurrentTool 属性为该工具。

ArcGIS Engine开发实例教程土木水电学院3S实验室8、创建数据属性表格

首先定义一个属性数据表格显示函数ShowAttirbuteGrid(),其代码如下:Private Sub ShowAttirbuteGrid(ByVal pFeatureLayer As

ESRI.ArcGIS.Carto.IFeatureLayer, ByVal myDataGridView As DataGridView) Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass

pFeatureClass = pFeatureLayer.FeatureClass

Dim i As Integer

Dim pQuery As ESRI.ArcGIS.Geodatabase.IQueryFilter = New ESRI.ArcGIS.Geodatabase.QueryFilter()

For i = 1 To pFeatureLayer.FeatureClass.Fields.FieldCount Dim s As String= pFeatureLayer.FeatureClass.Fields.Field(i - 1).Name.ToString()

myDataGridView.Columns.Add(s, s)

Next

myDataGridView.Rows.Add(pFeatureLayer.FeatureClass.FeatureCount(pQuer y) - 1)

Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature

Dim j As Integer

For i = 0 To myDataGridView.Rows.Count - 1

pFeature = pFeatureClass.GetFeature(i)

For j = 0 To myDataGridView.Columns.Count - 1

myDataGridView.Rows(i).Cells(j).Value =

pFeature.Value(j)

Next

Next

End Sub

其中,需要说明的是:要获取某个数据文件中的某个数据的某个字段,首先获取到该数据层Layer或FeatureLayer;然后定义FeatureClass 数据集;通过FeatureLayer的FeatureClass属性获得FeatureClass 数据集;在FeatureClass中包含了每个Feature,通过FeatureClass的GetFeature属性就可以获得某个ID的Feature;Feature的属性中就包括有Fields属性,通过Fields可以找到每个Field,Field的name属性就是属性字段的名称;通过Feature的Value属性就可以获得某个字段值。

在按钮的Click事件中调用前面的函数,并添加一个DataGridView控件,代码如下:

Dim player As ESRI.ArcGIS.Carto.ILayer

player = 296e8059bcd126fff6050b59yer(0)

Dim pFeatureLayer As ESRI.ArcGIS.Carto.IFeatureLayer

pFeatureLayer = player

ShowAttirbuteGrid(pFeatureLayer, DataGridView1)

第12 页共119 页

ArcGIS Engine开发实例教程土木水电学院3S实验室运行,最终显示结果如下图所示:

此外,还可以改进一下,添加一个ComboBox控件,在控件上添加图层的名称,直接点击显示属性按钮就可以显示ComboBox控件中相应的图层属性表格。首先需要更改一下ShowAttirbuteGrid()函数,如下:

Private Sub ShowAttirbuteGrid(ByVal pFeatureLayer As

ESRI.ArcGIS.Carto.IFeatureLayer, ByVal myDataGridView As DataGridView) myDataGridView.Rows.Clear()

myDataGridView.Columns.Clear()

Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass

pFeatureClass = pFeatureLayer.FeatureClass

Dim i As Integer

Dim pQuery As ESRI.ArcGIS.Geodatabase.IQueryFilter = New ESRI.ArcGIS.Geodatabase.QueryFilter()

For i = 1 To pFeatureLayer.FeatureClass.Fields.FieldCount Dim s As String= pFeatureLayer.FeatureClass.Fields.Field(i - 1).Name.ToString()

myDataGridView.Columns.Add(s, s)

Next

myDataGridView.Rows.Add(pFeatureLayer.FeatureClass.FeatureCount(pQuer y) - 1)

Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature

Dim j As Integer

For i = 0 To myDataGridView.Rows.Count - 1

pFeature = pFeatureClass.GetFeature(i)

第13 页共119 页

ArcGIS Engine开发实例教程土木水电学院3S实验室

For j = 0 To myDataGridView.Columns.Count - 1

myDataGridView.Rows(i).Cells(j).Value =

pFeature.Value(j)

Next

Next

End Sub

然后,在Form的Load事件中先添加ComboBox的Item,如下:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim i As Integer

For i = 0 To 296e8059bcd126fff6050b59yerCount - 1

ComboBox1.Items.Add(296e8059bcd126fff6050b59yer(i).Name.ToString()) Next

ComboBox1.Text = ComboBox1.Items(0)

End Sub

最后,更改显示属性按钮的Click事件,如下:

Dim player As ESRI.ArcGIS.Carto.ILayer

Dim i As Integer

For i = 0 To 296e8059bcd126fff6050b59yerCount - 1

If 296e8059bcd126fff6050b59yer(i).Name = ComboBox1.Text Then player = 296e8059bcd126fff6050b59yer(i)

Exit For

End If

Next

Dim pFeatureLayer As ESRI.ArcGIS.Carto.IFeatureLayer

pFeatureLayer = player

ShowAttirbuteGrid(pFeatureLayer, DataGridView1) 运行程序,最终显示结果如下所示:

第14 页共119 页

ArcGIS Engine开发实例教程土木水电学院3S实验室

9、缓冲分析

本例主要用到了Geoprocessor处理工具。

1)首先,添加引用AnalysisTools、Geoprocessing和Geoprocessor库,如下图所示:

第15 页共119 页

ArcGIS Engine开发实例教程土木水电学院3S实验室

第16 页共119 页

ArcGIS Engine开发实例教程土木水电学院3S实验室

2)添加一个按钮用于缓冲分析,两个Combox控件,分别用来列出图层和缓冲数据的单位,添加一个TextBox用于输入缓冲距离,还有一个不可写的TextBox 用于显示缓冲数据保存的路径,还有一个对应的浏览按钮用于浏览缓冲数据保存的路径,最后添加一个按钮用于关闭该缓冲的面板GroupBox。如下图所示:

3)先为ComboBox2添加图层列表,在Form的Load事件中就要先为它添加,代码如下:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim i As Integer

For i = 0 To 296e8059bcd126fff6050b59yerCount - 1

ComboBox2.Items.Add(296e8059bcd126fff6050b59yer(i).Name.ToString()) Next

第17 页共119 页

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新综合文库ArcGIS_Engine开发实例教程 长江三峡大学(2)全文阅读和word下载服务。

ArcGIS_Engine开发实例教程 长江三峡大学(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1409930.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top