gis1117
  • 注册日期
  • 发帖数
  • QQ
  • 铜币
  • 威望
  • 贡献值
  • 银元
阅读:1559回复:2

ArcGIS开发专题i一

楼主#
更多 发布于:2003-11-18 16:39
1.1ArcGIS桌面产品的定制与开发
ArcGIS桌面产品指ArcView、ArcEdit、ArcInfo,由于它们均采用了相同的体系结构,因此对ArcView、ArcEditor、ArcInfo的定制与开发方法相同。以下着重介绍ArcView的定制与开发。
ArcView由ArcMap、ArcCatalogue、ArcToolbox三个应用程序组成,其中ArcMap面向一般的数据编辑查询制图地理分析是基于地理数据应用的一体化平台,ArcCatalogue面向的是地理数据及数据字典的管理包括建立删除预览拷贝转存等是基于地理数据管理的应用,ArcToolbox一些不常用的数据转换分析和管理的命令向导。
(一)采用VBA方式定制与开发
VBA方式的编程环境是ArcCatalog或ArcMap软件自带的VBA编辑器,它不能脱离ArcCatalog或ArcMap软件环境。VBA开发有许多方便之处。在VBA编辑环境中存在两个全局变量:Application与ThisDocument,它们分别位于ArcObjects顶层的Application对象和比Application稍低一层的Document对象。这两个全局对象是VBA编程的起点,其他ArcObjects低层的组件都能由这两个对象得到。
1. VBA环境的启动
在ArcMap中点击菜单"Tools"/"Macros"/"Visual Basic Editor"即可进入VBA开发环境。
2. VBA环境的运行及调试
VBA中提供类似VB中的强大的调试功能,如设置断点、运行中显示变量值、单步执行、运行到光标处等。
3. 系统的定制
(1)启动界面的定制
为了让程序一启动时就运行用户的界面,如登录对话框、关于对话框等,需要对启动界面进行定制。其方法如下:
a. 加入启动窗体
点击"Insert"/"UserForm",增加新窗体,重命名窗体名称为frmLogin,加入相应的标签及编辑框、按钮。
b. 激活启动窗体
在Project窗口中,双击"ArcObjects"/"ThisDocument",在右面窗口中加入代码(文档打开事件中加入启动界面显示调用语句),如下所示:
Private Function MxDocument_OpenDocument() As Boolean
frmLogin.Show vbModal
End Function
(2) 系统菜单的定制
系统启动后,显示是为缺省的系统菜单,作为应用系统来说,有些用户可能用不到,另外也可能会新增一些菜单。在VBA中菜单定制一般有两种方法:a.在ArcMap中点击"Tools"/"Customize…",然后对菜单、工具条按钮等进行定制,可将不常用的菜单条或按钮条隐藏;

b.采用程序控制的方法。
修改菜单文字:
Dim item As ICommandItem
Set item = Me.CommandBars.Find(arcID.File_New)

item.Caption = "新建..."

删除菜单项:
item.Delete

c. 其它功能的定制
在VBA环境中,类型VB中开发一样,可增加窗体、函数、模块、类,借助这些窗体等的强大功能,可实现复杂的用户应用程序。
4. VBA环境的退出
点击VBA编程环境的"File"/"Close and Return to ArcMap"。

(二)采用VBA方式定制与开发
参见ArcObjects开发。


1.2. MapObjects开发
MapObjects是ESRI公司推出的一组地图组件,它包含一个名为Map的ActiveX控件(OCX),以及几十个ActiveX自动化对象。它的对象库结构清晰优雅,易于理解,可用在多数支持COM的标准Windows编程环境中,如Visual Basic、Visual C++、Delphi等。通过MapObjects,可以方便地将地图添加到应用程序中,并实现对地图的显示、查询、编辑和分析功能。
MapObjects可以访问多种数据源,从结构简练的ESRI Shape文件,到以拓朴关系为基础的经典ArcInfo Coverage,以至基于数据库(DBMS)和ArcSDE基础之上的GeoDatabase,都能够读取。除此以外,DWG、DGN、常见栅格数据等也能读取。
基于COM的应用程序开发,由于采用了控件形式,开发者完成不需要了解控件的具体实现,只需要关心其提供的方法及属性,大大简化了应用程序的开发过程,提高了开发的效率。下面以VB下MapObjects的开发为例介绍MapObjects的开发,在其它支持COM的环境下,开发方式类似。
开发步骤:
1. 建立"Standard EXE"类型的新工程;
2. 引用MapObjects控件
点击"Project"/"Components",在弹出的窗口中选中"ESRI MapObjects 2.1",点"确定"退出。在工具按钮中将该控件拖到Form窗体,其名称为Map1,调整其位置、大小。
3. 加入地图显示等相应功能
选择Map1控件,点鼠标右键选择"属性",选择"AddLayer"新加入一个Shape图层。
双击Map1控件,在Map1的MouseDown事件中加入代码:
Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Rectangle As MapObjects2.Rectangle
If Shift = 0 Then
Set Rectangle = Map1.TrackRectangle
If Not Rectangle Is Nothing Then Map1.Extent = Rectangle
Else
Map1.Pan
End If
End Sub
这样,一个简单的应用程序就作好了。运行后,显示出地图全图,在图形窗口中点鼠标左键,拉出一个矩形框,可放大显示地图,按住Shift键点鼠标左键可平移显示地图。然后,在此基础上可加入更复杂的功能。

4. 编写相应的代码、类,实现程序功能;
5. 调试程序;
6. 完成相应的使用说明文档;
7. 打包、分发应用程序。

喜欢0 评分0
gaomincyh
路人甲
路人甲
  • 注册日期2003-12-04
  • 发帖数18
  • QQ
  • 铜币54枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2003-12-04 16:44
还可以
举报 回复(0) 喜欢(0)     评分
asiahuang
卧底
卧底
  • 注册日期2004-07-22
  • 发帖数204
  • QQ
  • 铜币578枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-07-25 11:20
<img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em06.gif" /><img src="images/post/smile/dvbbs/em07.gif" />
上善若水 厚德载物 水善利万物而不争,处众人之所恶,故几于道。 居善地,心善渊,与善仁,言善信,政善治,事善能,动善时。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部