地信开发实习报告Word文档下载推荐.docx
《地信开发实习报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《地信开发实习报告Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
3、利用MapControl控件制作相对鹰眼程序。
三、时间安排
时 间
任 务
周一上午
实习动员、熟悉开发环境,练习阅读OMD图。
周一下午
练习VBA开发实例。
(见附件AO)
周二上午
周二下午
练习课件一、二中的例子。
周三
在二次开发环境中,练习第三章:
地图是如何组成的实例。
熟悉Map等对象模型。
周四
练习第五章:
AE地图的显示中的实例,熟悉symbol等对象。
周五
练习MapControl控件的使用。
结合实际,利用MapControl控件制作鹰眼程序。
最后总结完成实习报告。
四、实习内容及成果
(一)熟悉开发环境
ArcMap是ArcGIS家族的成员之一,它内置了一种集成编程环境―VBA(VisaulBasicforApllications)。
通过VBA编程,用户不但可以扩展ArcMap的菜单、工具条等,而且可以完成大多数用户的特定需求。
ArcMap中VBA编程的方法一般步骤如下:
写VBA宏(直接在VBA编辑器中编辑函数和过程)
1、如图1-1-1,单击菜单栏中的<
Tools>
命令,选择<
Macros>
的<
VisualBasicEditor>
项,直接启动ArcMap的VBA编辑器;
或者选择<
项,进入如图1-1-2所示Macro对话框,在“MacroName”文本框中输入要创建的宏的名称,并点<
Create>
按钮,启动VBA编辑器。
图1-1-1
图1-1-2
2、在图1-1-3所示的窗口中,用户可以根据实际选择在Normal节点或者Project节点的ThisDocument、Forms、Modules中编写宏(函数或过程),Normal节点下所写的宏系统自动保存,除非用户删除,否则它将始终存在并在任何工程中都有效;
而在Project节点下所写得宏随工程保存(如不保存工程,则宏也将不被保存),并只在工程中有效。
图1-1-3
3、运行VBA宏在VBA编辑器中写好VBA代码后,有两种方式运行:
第一,点击VBA编辑器工具条中的(运行)按钮,可立即运行写好的代码;
第二,退出VBA编辑器,重新启动Macro对话框,如图2,选择要运行的VBA宏名称,点击<
Run>
按钮即可运行相应的VBA宏。
(二)练习VBA开发实例。
1.实例一
功能:
1.显示当前地图名称
代码:
SubZDKmacros()
DimpMxDocumentAsIMxDocument
SetpMxDocument=Application.Document
MsgBoxpMxDocument.FocusMap.Name
EndSub
结果:
2.实例二
1.显示地图集中第一幅地图的地图名称
SubZDKmacros2()
DimpMxDocumentAsIMxDocument
DimpMapsAsIMaps
DimpMapAsIMap
SetpMxDocument=Application.Document
SetpMaps=pMxDocument.Maps
IfpMaps.Count>
1
SetpMap=pMaps.Item(0)
MsgBoxpMap.Name
EndIf
EndSub
3.实例三
1.显示当前地图层要素层层数
SubZDKmacros3()
DimpMxDocumentAsIMxDocument
DimpMapAsIMap
DimlCountAsLong
DimlIndexAsLong
SetpMxDocument=Application.Document
SetpMap=pMxDocument.FocusMap
lCount=0
ForlIndex=0To(pMap.LayerCount-1)
IfTypeOfpMap.Layer(lIndex)IsIFeatureLayerThen
lCount=lCount+1'
计数器加1
EndIf
NextlIndex
MsgBox"
Numberofthefeaturelayers"
&
_
"
intheactivemap:
lCount
4.实例四
1.显示地图集中第一幅地图的地图名称
2.显示错误数和错误信息
SubZDKmacros4()
DimpMxDocumentAsIMxDocument
DimpMapsAsIMaps
DimpMapAsIMap
OnErrorGoToSUB_ERROR
ExitSub
SUB_ERROR:
MsgBox"
Error:
Err.Number&
-"
Err.Description
1.无错误
2.有错误
5.实例五
1.使当前地图的第一图层变为可视(可视的话不变,不可视变为可视)
2.刷新当前视图并刷新视图表
PublicSubZDKmacros5()
DimpFeatureLayerAsIFeatureLayer
DimpActiveViewAsIActiveView
DimpContentsViewAsIContentsView
SetpMxDocument=ThisDocument
SetpMap=pMxDocument.FocusMap
SetpFeatureLayer=pMap.Layer(0)
IfNotpFeatureLayer.VisibleThen
pFeatureLayer.Visible=True
EndIf
SetpActiveView=pMap
pActiveView.Refresh
SetpContentsView=pMxDocument.CurrentContentsView
pContentsView.RefreshpFeatureLayer
1.未使用前
2.使用后
6.实例六
1.按NAME查询要素,查找“shandong”字段。
SubZDKmacros6()
DimpColorAsIRgbColor
DimpMxdocumentAsIMxDocument
SetpMxdocument=Application.Document
SetpMap=pMxdocument.FocusMap
DimpFeaturelayerAsIFeatureLayer
SetpFeaturelayer=pMap.Layer(0)
DimCitynameAsString
Cityname="
Shandong"
DimpFeatureAsIFeature
SetpFeature=GetCityFeature(pFeaturelayer,Cityname)
DimpFeatureSAsIFeatureSelection
SetpFeatureS=pFeaturelayer
pFeatureS.AddpFeature
SetpFeatureS.SelectionColor=getRGB(0,0,120)
DimpDocAsIMxDocument
DimpActiveViewAsIActiveView
SetpDoc=Application.Document
SetpActiveView=pDoc.activeView
pActiveView.Extent=pDoc.activeView.FullExtent
PrivateFunctionGetCityFeature(pFeaturelayerAsIFeatureLayer,strCityNameAsString)AsIFeature
DimpFeatureClassAsIFeatureClass
DimpQueryFilterAsIQueryFilter
DimpFeatureCursorAsIFeatureCursor
SetpFeatureClass=pFeaturelayer.FeatureClass
SetpQueryFilter=NewQueryFilter
pQueryFilter.WhereClause="
NAME_1='
"
strCityName&
'
SetpFeatureCursor=pFeatureClass.Search(pQueryFilter,False)
SetpFeature=pFeatureCursor.NextFeature
IfpFeatureIsNothingThen
SetGetCityFeature=Nothing
Else
SetGetCityFeature=pFeature
EndFunction
PublicFunctiongetRGB(ByValredAsLong,ByValgreenAsLong,ByValblueAsLong)AsIColor
DimpColor