1、3、利用MapControl控件制作相对鹰眼程序。三、时间安排时间任务周一上午实习动员、熟悉开发环境,练习阅读OMD图。周一下午练习VBA开发实例。(见附件AO)周二上午周二下午练习课件一、二中的例子。周 三在二次开发环境中,练习第三章:地图是如何组成的实例。熟悉Map等对象模型。周 四练习第五章:AE地图的显示中的实例,熟悉symbol等对象。周 五练习MapControl控件的使用。结合实际,利用MapControl控件制作鹰眼程序。最后总结完成实习报告。四、实习内容及成果(一)熟悉开发环境ArcMap 是 ArcGIS 家族的成员之一,它内置了一种集成编程环境VBA(Visaul Bas
2、ic for Apllications)。通过 VBA 编程,用户不但可以扩展 ArcMap的菜单、工具条等,而且可以完成大多数用户的特定需求。ArcMap 中 VBA 编程的方法一般步骤如下:写 VBA 宏(直接在 VBA 编辑器中编辑函数和过程) 1、如图 1-1-1,单击菜单栏中的命令,选择的项, 直接启动 ArcMap 的 VBA 编辑器;或者选择项,进入如图 1-1-2 所示 Macro 对话框,在“Macro Name”文本框中输入要创建的宏的名称,并点按钮,启动 VBA 编辑器。图 1-1-1图 1-1-22、在图 1-1-3 所示的窗口中,用户可以根据实际选择在 Normal
3、节点或者 Project节点的 ThisDocument、Forms、Modules 中编写宏(函数或过程),Normal 节点下所写的宏系统自动保存,除非用户删除,否则它将始终存在并在任何工程中都有效;而在 Project 节点下所写得宏随工程保存(如不保存工程,则宏也将不被保存),并只在工程中有效。图 1-1-33、运行 VBA 宏 在 VBA 编辑器中写好 VBA 代码后,有两种方式运行:第一,点击 VBA 编辑器工具条中的 (运行)按钮,可立即运行写好的代码;第二,退出 VBA 编辑器,重新启动 Macro 对话框,如图 2,选择要运行的 VBA 宏名称,点击按钮即可运行相应的 VBA
4、 宏。(二)练习VBA开发实例。1.实例一功能: 1.显示当前地图名称代码: Sub ZDKmacros() Dim pMxDocument As IMxDocument Set pMxDocument = Application.Document MsgBox pMxDocument.FocusMap.Name End Sub结果:2.实例二1.显示地图集中第一幅地图的地图名称Sub ZDKmacros2() Dim pMxDocument As IMxDocumentDim pMaps As IMapsDim pMap As IMapSet pMxDocument = Applicatio
5、n.Document Set pMaps = pMxDocument.MapsIf pMaps.Count 1 Set pMap = pMaps.Item(0) MsgBox pMap.Name End If End Sub3.实例三1.显示当前地图层要素层层数Sub ZDKmacros3() Dim pMxDocument As IMxDocument Dim pMap As IMap Dim lCount As Long Dim lIndex As Long Set pMxDocument = Application.Document Set pMap = pMxDocument.Focu
6、sMap lCount = 0 For lIndex = 0 To (pMap.LayerCount - 1) If TypeOf pMap.Layer(lIndex) Is IFeatureLayer Then lCount = lCount + 1 计数器加1 End If Next lIndex MsgBox Number of the feature layers & _ in the active map: lCount 4.实例四1. 显示地图集中第一幅地图的地图名称2. 显示错误数和错误信息Sub ZDKmacros4()Dim pMxDocument As IMxDocumen
7、t Dim pMaps As IMaps Dim pMap As IMap On Error GoTo SUB_ERRORExit SubSUB_ERROR:MsgBox Error: Err.Number &- Err.Description 1无错误2有错误5.实例五1. 使当前地图的第一图层变为可视(可视的话不变,不可视变为可视)2. 刷新当前视图并刷新视图表Public Sub ZDKmacros5()Dim pFeatureLayer As IFeatureLayerDim pActiveView As IActiveViewDim pContentsView As IContent
8、sViewSet pMxDocument = ThisDocument Set pMap = pMxDocument.FocusMap Set pFeatureLayer = pMap.Layer(0) If Not pFeatureLayer.Visible ThenpFeatureLayer.Visible = TrueEnd IfSet pActiveView = pMap pActiveView.Refresh Set pContentsView = pMxDocument.CurrentContentsViewpContentsView.Refresh pFeatureLayer 1
9、. 未使用前2. 使用后6.实例六1. 按NAME 查询要素,查找“shandong”字段。Sub ZDKmacros6()Dim pColor As IRgbColorDim pMxdocument As IMxDocumentSet pMxdocument = Application.DocumentSet pMap = pMxdocument.FocusMapDim pFeaturelayer As IFeatureLayerSet pFeaturelayer = pMap.Layer(0)Dim Cityname As StringCityname = ShandongDim pFea
10、ture As IFeatureSet pFeature = GetCityFeature(pFeaturelayer, Cityname)Dim pFeatureS As IFeatureSelectionSet pFeatureS = pFeaturelayerpFeatureS.Add pFeatureSet pFeatureS.SelectionColor = getRGB(0, 0, 120)Dim pDoc As IMxDocumentDim pActiveView As IActiveView Set pDoc = Application.Document Set pActive
11、View = pDoc.activeView pActiveView.Extent = pDoc.activeView.FullExtent Private Function GetCityFeature(pFeaturelayer As IFeatureLayer, strCityName As String) As IFeatureDim pFeatureClass As IFeatureClassDim pQueryFilter As IQueryFilterDim pFeatureCursor As IFeatureCursorSet pFeatureClass = pFeaturel
12、ayer.FeatureClassSet pQueryFilter = New QueryFilter pQueryFilter.WhereClause = NAME_1 = strCityName &Set pFeatureCursor = pFeatureClass.Search(pQueryFilter, False)Set pFeature = pFeatureCursor.NextFeature If pFeature Is Nothing Then Set GetCityFeature = Nothing ElseSet GetCityFeature = pFeature End FunctionPublic Function getRGB(ByVal red As Long, ByVal green As Long, ByVal blue As Long) As IColorDim pColor
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1