中南大学GIS开发指导书.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《中南大学GIS开发指导书.pdf》由会员分享,可在线阅读,更多相关《中南大学GIS开发指导书.pdf(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、GIS二次开发实验指导书(ArcGIS 9.3VBA/AO/Engine 开发教程)张宝一中南大学GIS研究中心用 扁 一宏语言式二次开发(ArcGIS 9.3/VBA)实验一创建 VBA 宏与 UIButtonControl实验目的通过ArcMap的 VBA环境下编程,初步了解ArcObjects组件库,力求能读懂、理解V BA实例程序,基本了解宏语言式GIS二次开发的基本思路和方法。实验内容1.在ArcMap地图文档中添加一个VBA宏,实现对某一图层的唯一值渲染;2.在ArcMap地图文档中添加一个UlControl按钮,打开一个“虫眼”窗口。实验学时2 学时。实验步骤设置VBA编译环境(
2、显式声明),输入代码Option Explicit内容一:写 VBA宏(直接在VBA编辑器中编辑函数和过程)1、创建宏,并启动VBA编辑器2、在地图文档中Project中编写宏(函数或过程)3、在 Macro对话框或VBA编辑器中运行VBA宏设置层 UniqueValue Renderer本例要实现的是如何在一个层中设置UniqueValue Renderer,根据属性字段填充上不同的颜色的polygon;首先实例化接口 IGeoFeatureLayer,通过类 UniqueValueRenderer 实现 lUniqueValueRender 接 口 的对象实例,通 过 对 lUniqueV
3、alueRender的 属 在 进 行 赋 值,最 后 赋 值 给IGeoFeatureLayer.Render 属性参考代码如下:Dim pMxDocument As IMxDocumentDim pMap As IMapDim ILyrCnt As LongDim ILyr As LongDim pLyr As ILayerDim pGeoFeatLyr As IGeoFeatureLayerDim pUniqueValueR As lUniqueValueRendererDim pTable As ITableDim IfieldNumber As LongDim pColorRamp
4、As IRandomColorRampDim pEnumRamp As lEnumColorsDim pNextUniqueColor As IColorDim pQ ueryFilter As IQ ueryFilterDim pCursor As ICursorDim pNextRow As IRowDim pNextRowBuffer As IRowBufferDim codeValue As StringDim pFillSymbol As IFillSymbolSet pMxDocument=ThisDocumentSet pMap=pMxDocument.FocusMapILyrC
5、nt=pMap.LayerCountFor ILyr=0 To ILyrCnt-1Set pLyr=pMap.Layer(ILyr)If pLyr.Namc=xianjie_changsha_9 ThenSet pGeoFeatLyr=pLyrExit ForEnd IfNext ILyrSet pUniqueValueR=New UniqueValueRendererSet pTable=pGeoFeatLyrA field for the shapefileConst strNameField=Name1IfieldNumber=pTable.FindField(strNameField)
6、If IfieldNumber=-1 ThenMsgBox Cant find field called&strNameFieldExit SubEnd If pUniqueValueR.FieldCounl=1,pUniqueValueR.Field(O)=strNameField,Set pColorRamp=New RandomColorRamp,pCoIorRamp.StartHue=0 pCoIorRamp.Min Value=99,pCoIorRamp.MinSaturation=15 pColorRamp.EndHue=360,pColorRamp.Max Value=100 p
7、ColorRamp.MaxSaturation=30,pColorRamp.size=100 pColorRamp.CreateRamp True Set pEnumRamp=pColorRamp.Colors Set pNextUniqueColor=Nothing Set pQ ueryFilter=New Q ueryFilter,pQ ueryFilter.AddField strNameField,Set pCursor=pTable.Search(pQ ueryFilter,True),Set pNextRow=pCursor.NextRow,Do While Not pNextR
8、ow Is Nothing,Set pNextRowBuffer=pNextRow,code Value=pNextRowBuffer.Value(lfieldNumber),Set pNextUniqueColor=pEnumRamp.Next,If pNextUniqueColor Is Nothing Then,pEnumRamp.Reset,Set pNextUniqueColor=pEnumRamp.Next End If Set pFillSymbol=New SimpleFillSymbol pFillSymbol.Color=pNextUniqueColor,pUniqueVa
9、lueR.AddValue codeValue,u,pFillSymbol Advance the cursor to the next row,or end of the dataset Set pNextRow=pCursor.NextRow Loop*Now set the layers renderer to the unique value renderer Set pGeoFeatLyr.Renderer=pUniqueValueR pMxDocument.ActiveView.Refresh,pMxDocument.UpdateContents运行效果图如下 无标St IWcMa
10、p-AtelnTo内容二:创建UlContro】(交互式VBA编程)1 Customize对话框的“Commands页,选中UlControls”后点击6 6 亚UlControb 按钮2、选择UlControl类型:UIButtonControl:创建 Button;UIToolControl:创建与 Map 交互的 Tool;UIEditBoxControl:创建 EditBox;UIComboBoxControl:仓 U 建 ComboBox。3、进入VBA编辑器在UlControl的事件中进行VBA编程4、添加一个工具条,选中UlControl并将其拖置到工具条上。ToolbarXTo
11、olbar Name:|VBA SampleslHV.OK Cancel参考代码如下:运用这个子程序生成了一个新的放大镜窗口,在本例中将放大率设定为200%,Sub CreateMagnifierWindow(),Dim pMapInset As IMapInset,Dim pMapInsetWindow As IMapInsetWindow,Dim pDataWindowFactory As IDataWindowFactory,Set pDataWindowFactory=New MapInsetWindowFactory,If pDataWindowFactory.CanCreate(A
12、pplication)Then,Set pMapInsetWindow=pDataWindowFactory.Create(Application),Set pMapInset=pMapInsetWindow.MapInset,Set the zoom percent to 2(X)%,pMapInset.ZoomPercent=200,pMapInsetWindow.Show True End If,End Sub运行效果图如下实验要求1.使用基础实习成果数据(或其他示例数据)2.完成实验要求的两个实例(最好要有自己的内容)3.将代码保存在一个地图文件M X D中,上交后方可离开实验室(如未
13、完成可在课下通过邮件提交)实验二创建 VBAUIToolControl实验目的通过ArcMap的 VBA环境下编程,初步了解ArcObjects组件库,实现GIS的基本窗口操作,了解宏语言式GIS二次开发的基本思路和方法。实验内容1.在ArcMap地图文档中添加一个UlControl工具,实现对地图的拉框和点击放大;2.在ArcMap地图文档中添加一个UlControl工具,实现对地图的鼠标移动。实验学时2 学时。实验步骤设置VBA编译环境(显式声明),输入代码Option Explicit内容一:窗口放大用户点击按钮后,可以在地图上进行点击或者拖放矩形框来放大地图因为考虑到用户可以单击放大,
14、可以拖放矩形框来放大,所以采用INewEnvelopeFeedback接口来显示拖放矩形框效果。IDiSDlavFeedbackloThe new envelopefeedback is perhaps themost usefijl and simplest of the feedbacks.It is used to allow theuser to create a newenvelope on the display,known asdragging a rectangle9 INewEnvelopeFeedback:IDisplayFeedback-AspectRatio:Doubl
15、eM l Constraint:esriEiivelopeConstraiiitsY-Start(in Point:IPoiirt)Stop:(Envelope日 IDisplayFeedback:IUnknown Display:IScreenDisplaySymbol:(Symbolv-MoveTo(in Point:IPoiirt)+Refresh(in hDC:OLE_HANDLE)日 IUnknown hidden+AddRefv-Querylnterface(in riid:GUID,out ppvObj:Any)Release接口 INewEnvelopeFeedback 有 I
16、DisplayFeedback 派生。接口 IDisplayFeedback具有如下属性和方法:Display:设置Feedback所利用的显示属性;MoveTo:当鼠号移动时,设置鼠标点所在的坐标;Refresh:刷新画面;Symbol:设置显示风格。Feedbacks对象可以划分为两类:1.大部分是通过stop方法返回一个新的儿何2.也有一些纯 粹 为 了 显示,开 发 者 来 计 算 一 个 新 的 几 何,包括MoveGeometryFeedback,MovelmageFeedback,NewMultiPointFeedback,VertexFeedbackoDisplay feedb
17、ack objectsrnCraalca a fwntMcko n th e fta/W rmgvtapctl anaBzkrctfV0 BezirMove-Point-r FeedbackZnaix i fMdZdc onm p a y lar a cakMCrartM a toedcock on the/”,ter addg naw dlnenien shapaiCTMtc*i tKdEadc 8 g d p h y fv但.a now sn/dopeCallout-FeedbackIStOCraatse a rMdbKk co ttecr a gro(tffKdMCk ejectsGro
18、up-FeedbackLineMove-Pokit-FeedbackCivtUa atMdDnck on tte deploylor 3tMr a no*Bactor curvaCreate*a teadEock animdifor a newtNtOmnionFMbedbeckDimnsfon-FeedbackEnvelcpe-FMvWurParfHtdbuK c-Ktv4ErwMcpaFMtn:i o-nC g。a iMdDadttor add ngCsHM reKk on n dtapiyKr tnoMng an fimaiop*Crvelao fMdEMdc OH 1h。甲ay for
19、nxMtga IneCroat-a iwctock on V la y ref movhj a potn cn a2ICreate*a teodt:cn tr N/ytot 川 叫 a new E/O-R 68120-0-crouoa a!MSO9M or a qeonwtiy tyMove-Envelope-FeedbackGeometty-FeedbeckNewLine-FedbackCtMte:a fw x:k co 2 wpay totm tE an huge cf cyneol&sd stemsrisor gl x,MoveLne-FedbackCroats a fMaback cn
20、 ths dtaptiy for moMng!Croats a fMlxickanlhd dtapAiy,Kr addng a new m ttfxlrt/LTMiM 1 roaltMCk 8 t!dtptoylor movhg a part h a poygonMultiPoint-FeadbackMovePoirit-FedfcckIReiMpeFMt*o-MovePoint-Feedteckreccing an envcicptVertex-Feedback图 1 显示反馈Feedbacks对象具体步骤如下:添加 UIToolControl添加模块级变量,参考代码如下:Dim m_bIs
21、MouseDown As BooleanDim m_pPoint As IPointDim m_pFeedbackEnv As INewEnvelopeFeedback修改箴标键按下事件,-1 lic r o s o ft Visual Basic-Changsha,axd-fThisDocaaent(代 码)文 件 0)编 辑 视 图 叩 独 人 Q)格 式 Q)0Q)运 行 工具a)外 餐 程 序 窗 口 量)港 助 QPKE必豹-)fr 79 Ml i 雄d rB al()就 P roject(Ckaasska-对象国 ThiiDanat-T横成避 模 出班快2C j 引用ZoMOatp
22、 Fi l l S y m b o l.Co l o r =p U n i q u e V a l u e R.Ad d V a l u e e g矫 Ad v a n c e t h e c u r s o r t o L,S e t p Ne x t Ro w =p Cu r s o r.小 三 赳LOOP g r s b No w s e t t h e l a y e r s r e n d e r e t l s i L-S e t p Ge o Fe a t Ly r.Re n d e r e r =p U n i q u e V a l u e Rp Mx Do c u m e
23、n t.Ac t i v e V i e w.Re f r e s hp Mx Do c u m e n t.U p d a t e Co n t e n t sEn d S u b _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Th SDO C M*RxDocunaat技 字 母 序|按分英序|En d S u bPr i v a t e S u b Z o o m Ou t _ S e l e c t 0Pr i v a t eDi mDi mDi mS u b Z o o
24、m W i n d o w _ C1i c k()p Ma p In s e t As IMa p In s e tp Ma p In s e t W i n d o w As IMa p In s e t W i n d o wp Da t a W i n d o w Fa c t o r y As IDa t a W i n d o w Fa c t o r yp Da t a W i n d o w Fa c t o r y =Ne w Ma p In s e t W i n d o w Fa c t o r yIf p Da t a W i n d o w Fa c t o r y.C
25、a n Cr e a t e(Ap p l i c a t i o n)T h e nS e t p Ma p In s e t W i n d o w =p Da t a W i n d o w Fa c t o r y.Cr e a t e (Ap p l i c a t.S e t p Ma p In s e t =p Ma p In s e t W i n d o w.Ma p i n s e tS e t t h e z o o m p e r c e n t t o 200%参考代码如下:Private Sub ZoomOut_MouseDown(ByVal button As L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 GIS 开发 指导书
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内