ArcGISEngine开发.ppt
《ArcGISEngine开发.ppt》由会员分享,可在线阅读,更多相关《ArcGISEngine开发.ppt(145页珍藏版)》请在三一办公上搜索。
1、,ArcGIS Engine 开发,城市与旅游学院张会霞,组件化程序设计,组件:是指已经编译、链接好并可以使用的二进制代码模块,每一个模块可以运行在同一台机器上,也可以运行在局域网、广域网及Internet上的不同机器上。组件技术中的关键技术之一是接口通信问题。在同一软件中的组件必须使用同样的接口标准才能保证组件之间可以进行通信。,COM概述,COM 的特性封装性多态性重用性语言无关性进程透明性,COM 的结构COM 对象COM 接口类和接口,组件对象模型,COM(Component Object Model),即组件对象模 型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了
2、如何可动态交替更新组件。COM是开发软件组件的一种方法。对象拥有一个或多个接口 接口是定义了一组方法和属性的逻辑关系与对象的通信是通过接口来进行的,.NET平台概述,.NET开发平台包括.NET Framework 和Visual S。Visual S是一套完整的开发工具,用于生成ASP Web应用程序、Web Services、桌面应用程序和移动应用程序。.NET Framework是生成、部署和运行Web服务及应用程序的平台。其具有两个主要组件:通用语言运行时(Common Language Runtime)和.NET Framework类库。,ArcObjects简介,ArcObject
3、s是ArcGIS Desktop的开发平台。ArcGIS Desktop是一系列GIS软件系统:ArcInfo,ArcEditor和ArcView。这些系统服务于GIS。ArcGIS Desktop系统包含一系列的应用,如ArcCatalog、ArcMap、ArcToolBox和ArcScene,并能够集成大量不同的扩展产品。如,ArcGIS Spatial Analyst(空间分析模块),ArcGIS Geostatistical Analyst(地理统计分析模块),ArcGIS 3D Analyst(三维分析模块)等。ArcObjects是使用微软的组建对象模型书写,凡支持COM标准的开发
4、语言都能使用ArcObjects。,ArcGIS Engine简介,ArcGIS Engine 是开发者用来构建应用程序的一整套嵌 入式GIS 组件。使用ArcGIS Engine,您可以将一些GIS 功能嵌入到已有的应用程序中,这包括Microsoft Office 产品,例如Word和Excel,建造有针对性的客户应用程序用来将高级GIS 系统与他人分享。ArcGIS Engine由一个软件开发包(software development kit,SDK)和一个给所有GIS 应用提供平台的运行许可(runtime)构成。,ArcGIS Engine简介-体系结构,Arc Engine功能层
5、次上由以下五个部分组成:基本服务:由GIS核心Arc Objects构成,如要素几何体(geometry)和显示(display)。数据存取:Arc Engine可以对许多栅格和矢量格式进行存取,包括强大而灵活的地理数据库(geodatabase)。地图表达:ArcObjects使用符号、注记和专题地图来生成和表达地图。开发组件:用于快速定制应用开发程序的高度封装用户接口以及开发过程中全面的帮助系统。运行时选项:Arc Engine运行时可以与标准功能或其他高级功能一起部署。,ArcGIS 控件介绍,ArcGIS的控件是高度集成化的,首先能够让开发者构建和扩展ArcGIS的功能,其次能够提供图
6、形用户界面(GUI)。ArcGIS的控件被称为Active X控件,.NET控件。MapControl 类似于“数据”。PageLayoutControlToolbarControlTOCControl(Tablet of Contents Control)SceneControlGlobleControlReaderControl,使用ArcGIS控件,可以用两种方式来构建应用程序。ArcGIS 控件可以被嵌入到应用程序中,将地图相关的功能作为辅助功能添加进去。ArcGIS 控件可以用来创建一个独立的应用程序。不管是那种方式,独立的ArcGIS 控件能够被嵌入到已有程序中,或者TOCCont
7、rol和ToolbarControl能够和其他ArcGIS控件联合使用,提供应用程序的部分框架。,ArcGIS Engine 中的控件,制图控件3D控件介绍框架控件介绍控件使用实例,制图控件介绍,MapControl控件MapControl对应于ArcMap Desktop 应用中的“数据”。MapControl控件中封装了Map对象,用于管理控件的外观、显示属性和地图属性、管理、添加数据图层,装载地图文档,显示、绘制跟踪图层。它实现的主要接口有IMapControlDefault、IMapControl2、IMapControl3、IMapControlEvents。,PageLayoutC
8、ontrol控件PageLayoutControl控件主要用于页面布局与制图。对应于ArcMap Desktop 应用中的“页面布局”视图,该控件封装了PageLayout类。PageLayoutControl控件不能添加地图图层或地理数据,必须通过MXD文件来加载需要处理的数据。PageLayoutControl控件主要实现 IPageLayoutControlDefault、IPageLayoutControl、IPageLayoutControl2、IPageLayoutControlevents等接口。,3D控件介绍,场景控件(SceneControl)SceneControl是一个高
9、性能的嵌入式的开发组件,提供给开发者建立和扩展Scene程序。控件SceneControl相当于ArcScene Desktop 应用程序中的3D视图,并提供了显示和增加空间数据到3D的方法等。SceneControl是通过对象接口ISceneViewer来表现。这个接口提供一个Camera对象,该对象由视角(Observer)和目标(Target)构成。,Globe控件GlobeControl是一个高性能的嵌入式的开发组件,提供给开发者建立和扩展ArcGlobe程序,以便进行绘图等操作。GlobeControl显示3D视图,并能提供全球表现的位置,而且是基于3D数据。GlobleContro
10、l控件对应于ArcGlobe桌面应用程序的三维视图。GlobeControl通过对象接口来操作IGlobe视图,用户可以通过IGlobeViewer对象来操作ArcGlobe应用程序。,框架控件介绍,图层树控件(TOCControl)TOCControl用来管理图层的可见性和标签的编辑。TOCControl需要一个“伙伴控件”一起工作,“伙伴控件”可以是一个MapControl、PageLayoutControl、ReaderControl、SceneControl或者是GlobeControl。“伙伴控件”能够在设计的时候通过ToolbarControl的属性页设置。或者在程序运行中通过Se
11、tBuddyControl方法来设置。“伙伴控件”都实现了ITOCBuddy接口。TOCControl利用“伙伴控件”来显示交互性的树结构目录,包括“伙伴控件”的地图、图层、符号等内容。,工具栏控件(ToolbarControl)ToolbarControl需要与一个“伙伴控件”一起工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,SceneControl或者是GlobeControl。“伙伴控件”能够在设计的时候通过ToolbarControl的属性页设置。ToolbarControl实现了ARCGIS中的所有功能,如果想使这些功能进一步扩展,难度很大。,
12、ToolbarControl的使用在ToolbarControl属性页中,有一个Items的选项卡,通过选项卡中的Add 按钮可以添加相应的功能按钮。,基于.NET的ArcGIS Engine的开发,一个简单的应用程序(1)创建一个新的工程(2)添加控件及引用(3)窗体上添加控件,编写代码(地图)(4)设置ToolbarControl 与MapControl控件关联(5)运行程序,(1)创建一个新的工程启动Visual Studio.NET,从“新建项目”对话框中创建一个新的Visual C#“Windows应用程序”项目,并设置项目名称为“Sample”,选择位置保存该项目。,(2)添加控件
13、及引用在工具箱中添加选项卡,改为ESRI,在ESRI标签上单击鼠标右键,从弹出的快捷菜单中选择“选择项”,在弹出的“选择工具箱”对话框中选择“.NET Framework组件”选项卡,选中“ArcMapControl”、“PageLayoutControl”、“ToolbarControl”、“TOCControl”,在“项目”菜单中选择“添加引用”,在弹出的“添加引用”对话框中,双击“ESRI.ArcGIS.Carto”、“ESRI.ArcGIS.Display”、“ESRI.ArcGIS.Geometry”、“ESRI.ArcGIS.System”、“ESRI.ArcGIS.SystemU
14、I”和“ESRI.ArcGIS.Utility”等选项。单击确定按钮。,(3)窗体上添加控件,编写代码打开.NET窗体,双击“工具箱”中“ESRI”标签栏中的AxMapControl控件,将MapControl加入到窗体上,再将AxToolbarBox也添加到窗体上。在窗体上双击显示窗体代码窗口,加载图层到MapControl中,在Form_Load事件中添加地图文档加载代码:,private void Form1_Load(object sender,EventArgs e)string path=d:arcgis engine 开发源程序第三章lesson1lesson1data;stri
15、ng fiename=multipoint.shp;axMapControl1.AddShapeFile(path,fiename);axMapControl1.Extent=axMapControl1.FullExtent;,(4)设置ToolbarControl 与MapControl控件关联 设置工具控件与地图控件关联,使用工具栏来操作地图,在.NET 窗体上选中ToolbarControl 控件,单击Properties,弹出“属性”对话框,在“Buddy”下拉列表中选择关联“axMapControl”。选择“Items”选项卡,单击“Add”按钮,在弹出的“Controls Comm
16、ands”对话框中添加“Pan”、“Zoom In”和“Zoom Out”。,桌面GIS 应用程序框架的建立,本讲主要是使用MapControl、PageLayoutControl、ToolbarControl、TOCControl四个控件建立起基本的桌面GIS应用程序框架。最终成果预览如下:,1、新建项目启动VS2005,选择“文件|新建|项目”,在项目类型中选择Visual C#,再选择Windows应用程序模板,输入名称“3sdnMap”,点击确定。在解决方案管理器中将“Form1.cs”重命名为“3sdnMap.cs”,在设计视图中,选中窗体,将其属性中的“Text”改为“3sdnMa
17、p”。,2、添加控件选择工具箱中的“菜单和工具栏|MenuStrip”,将其拖入窗体。选择工具箱中的“ArcGIS Windows Forms”节,将“ToolbarControl”控件拖入窗体,并将其属性中的Dock设置为Top。选择工具箱中的“菜单和工具栏|StatusStrip”,将其拖入到窗体。选择工具箱中的“容器|SplitContainer”容器拖入窗体,并将其属性中的Dock设置为Fill。,将TabControl控件拖入Panel1,将Alignment属性设置为Bottom,Dock属性设置为Fill。点击TabPages属性右边的按钮,弹出TabPage集合编辑器,将tab
18、Page1的Name设置为tabPageLayer,Text设置为图层,将tabPage2的Name设置为tabPageProperty,Text设置为属性。如下所示。选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill。选择“属性”选项卡,拖入DataGridView控件,设置Dock属性为Fill。,拖入TabControl控件到Panel2,设置Dock属性为Fill。并上述类似的方法,将两个选项卡的Name和Text分别设置为:(tabPageMap、地图),(tabPageLayout,制版)。选择“地图”选项卡,拖入MapControl控件,设置Dock属性
19、为Fill。选择“制版”选项卡,拖入PageLayoutControl控件,设置Dock属性为Fill。最后将LicenseControl控件拖入到窗体的任意地方。按F5编译运行,可以看到刚才布局好的程序界面了。,3、控件绑定通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1,如下图所示。,4、添加工具此时,工具条中还没有任何工具,添加的方法也很简单。右击ToolbarControl,选择“属性|Items”,点击Add,选择Commands选项
20、卡中的Generic,双击Open、SaveAs、Redo、Undo即可将相应工具添加到工具条。常见的工具有:Map Navigation中的导航工具,Map Inquiry中的查询工具,Feature Selection中的选择工具,你可以根据需要酌情添加工具。,5、编译运行按F5即可编译运行程序,至此桌面GIS应用程序框架基本框架已经搭建好了,你可以通过工具条的工具打开地图文档,浏览地图了,效果如开篇所示.,ArcGIS Engine介绍-类库,1、SystemUI类库 2、Geometry类库 3、Display类库 4、Server类库 5、。,地图文档加载、shp文件的加载,此示例用
21、于加载地图文档,Shp文件以及删除图册。操作步骤如下:在VC2005中创建一个Windows 应用程序项目,命名为“lesson1”,在左边的工具箱中选择“LicenseControl”控件,拖放到默认的“Form1”窗体上。用同样的方法在窗体上添加“MapControl”控件,在窗体上放置两个按钮控件“button1”、“button2”、“button3”。修改按钮控件文本如后图。,添加应用:using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Sy
22、stemUI;,private void button1_Click(object sender,EventArgs e)loadMapDocument();/加载地图文档 private void loadMapDocument()System.Windows.Forms.OpenFileDialog OpenFileDialog;OpenFileDialog=new OpenFileDialog();OpenFileDialog.Title=打开地图文档;OpenFileDialog.Filter=map documents(*.mxd)|*.mxd;OpenFileDialog.Show
23、Dialog();string filepath=OpenFileDialog.FileName;,if(axMapControl1.CheckMxFile(filepath)axMapControl1.MousePointer=esriControlsMousePointer.esriPointerHourglass;axMapControl1.LoadMxFile(filepath,0,Type.Missing);axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault;else MessageBox.Sh
24、ow(filepath+不是有效的地图文档);,private void button2_Click(object sender,EventArgs e)addShapeFile();/加载SHP文件 private void addShapeFile()System.Windows.Forms.OpenFileDialog openFileDialog;openFileDialog=new OpenFileDialog();openFileDialog.Title=打开图层文件;openFileDialog.Filter=map documents(*.shp)|*.shp;openFile
25、Dialog.ShowDialog();,FileInfo fileInfo=new FileInfo(openFileDialog.FileName);string path=openFileDialog.FileName.Substring(0,openFileDialog.FileName.Length-fileInfo.Name.Length);try axMapControl1.AddShapeFile(path,fileInfo.Name);catch(Exception e)MessageBox.Show(添加图层失败!+e.ToString();,private void bu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcGISEngine 开发
链接地址:https://www.31ppt.com/p-6501621.html