




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章 地图基本操作的实现,(),地理信息系统设计与开发,本 章 内 容,使用arcengine控件开发 创建桌面应用程序 地图基本操作实现,一 使用arcengine控件开发,arcengine提供大量高级开发控件,使开发人员可以建立或扩展gis应用程序和创建高质量的地图用户界面。包括mapcontrol、pagelayoutcontrol、readercontrol、toccontrol和toolbarcontrol。globecontrol和scenecontrol也可以获得,但使用这两个控件的应用程序必须具有arcengine的3d分析选项授权。,一 使用arcengine控件开发,嵌
2、入式组件:可拖放到可视化设计环境提供的容器窗体或对话框中,并可调整控件的大小和位置。 属性页:右键单击控件并选择“属性”菜单项。 arcobjects:每个控件为其封装的arcobjects上频繁使用的属性和方法提供了快捷方式;每个控件还有一个执行公共任务的帮助方法。 事件:每个控件都会响应终端用户的键盘和鼠标交互而触发事件。响应发生在控件内的行为会触发一些其他事件。,1.arcgis控件主题和概念,一 使用arcengine控件开发,1.arcgis控件主题和概念,伙伴控件:toolbarcontrol和toccontrol都要与另一个“伙伴控件”协同工作。 控件命令:arcengine提供
3、了一系列命令、工具和菜单与arcgis控件协同工作;开发人员也可以通过创建自定义命令、工具和菜单来扩展arcengine提供的命令集。 地图制作:arcgis desktop应用程序可用于预制作能被装载到arcgis控件中的文档,以便快速生产高质量的地图。,一 使用arcengine控件开发,2. mapcontrol和pagelayoutcontrol,mapcontrol和pagelayoutcontrol对应于arcmap桌面应用程序的“数据”和“布局”视图。用arcmap创作的地图文档可以装载到这两个控件中。 地图文档可在设计时通过这两个控件的属性页设置,控件可以被设置为“链接”或“包
4、含”地图文档;地图文档也可以使用loadmxfile方法通过编程装载到控件中。 mapcontrol和pagelayoutcontrol不仅可以读取地图文档,还可以写入地图文档(*.mxd)。,一 使用arcengine控件开发,3. globecontrol和scenecontrol,globecontrol和scenecontrol对应于arcglobe和arcscene桌面应用程序的三维试图。用arcglobe和arcscene应用程序创作的globe和scene文档可以分别装载到globecontrol和scenecontrol中。 这两个控件都具有内置的导航功能,运行终端用户移动三维
5、视图和可视化三维数据,而不必使用控件命令。要使用内置的导航工具,必须通过属性页或者编程设置navigate属性。,一 使用arcengine控件开发,4. readercontrol,readercontrol对应于arcreader桌面应用程序的“数据”和“布局”视图及其内容表(toc)。该控件还包含arcreader桌面应用程序使用的内部窗口和工作,如find窗口和identify工具等。用arcmap桌面应用程序创造并用arcgis publisher扩展模块发布的发布地图文档(pmf)若在发布时设置为允许装载到定制的arcreader应用程序中,则可以装载到readercontrol中
6、。 readercontrol中有一个简单的自包含对象模型,提供arcreader桌面应用程序所有功能而不需要访问arcobjects。,一 使用arcengine控件开发,5. toccontrol和toolbarcontrol,toccontrol要与一个“伙伴控件”协同工作。“伙伴控件”可在设计时通过toccontrol属性页设置或在驻留toccontrol的容器被显示时用setbuddycontrol方法通过编程设置。 toolbarcontrol要与一个“伙伴控件”协同工作。“伙伴控件”可在设计时通过toolbarcontrol属性页设置或在驻留toolbarcontrol的容器被显
7、示时用setbuddycontrol方法通过编程设置。 toolbarcontrol可以驻留操作其“伙伴控件”显示的命令、工具和菜单。,返回,二 创建桌面应用程序,1.目标,创建第一个arcgis engine桌面应用程序 加载mxd文档,2.准备工作,visual studio 2005/2008 arcgis engine developer kit 9.2 制作arcgis实验数据地图文档mxd,二 创建桌面应用程序,3.设计流程图,二 创建桌面应用程序,4.创建第一个arcgis engine桌面应用程序-1,二 创建桌面应用程序,可以看到新创建的项目中自动加载了toolbarcont
8、rol、toccontrol、licensecontrol、mapcontrol四个arcgisengine控件以及一个.net statusstrip控件,4.创建第一个arcgis engine桌面应用程序-1,二 创建桌面应用程序,5.加载mxd地图文档数据-1,二 创建桌面应用程序,6.创建第一个arcgis engine桌面应用程序-2,1. 动visual studio .net,并从新建项目对话框中创建一个新的visual c# “windows应用程序”项目。 2.将项目命名为“demo”,并选择位置存取该项目。 3.在“工具箱”的“windows窗体”标签栏中单击右键,然后从
9、上下文菜单中 选择“选择项”(vs2005)“添加/移除项(i)”(vs2003);或者工具-选择工具箱。 4.在“选择工具箱”中选择“.net framework组件”,并复选“ axmapcontrol”,“axpagelayoutcontrol”,“axtoccontrol”和“ axtoolbarcontrol”,单击确定按钮。这样所选择的控件将显示在工具箱的 windows窗体标签栏中。,二 创建桌面应用程序,6.创建第一个arcgis engine桌面应用程序-2,二 创建桌面应用程序,6.创建第一个arcgis engine桌面应用程序-2,二 创建桌面应用程序,6.创建第一个a
10、rcgis engine桌面应用程序-2,5.设置控件anchor属性,使控件大小随窗口变化而变化,二 创建桌面应用程序,6.创建第一个arcgis engine桌面应用程序-2,private void form1_load(object sender, eventargs e) this.location = new point(0, 0); axtoolbarcontrol1.left = this.left; axtoolbarcontrol1.width = this.width; axtoolbarcontrol1.top = menustrip1.height; axtoccon
11、trol1.left = this.left; axtoccontrol1.top = axtoolbarcontrol1.top + axtoolbarcontrol1.height; axtoccontrol1.width = this.width / 6; axtoccontrol1.height = this.height - axtoolbarcontrol1.top - axtoolbarcontrol1.height; axmapcontrol1.top = axtoccontrol1.top; axmapcontrol1.height = axtoccontrol1.heigh
12、t; axmapcontrol1.left = this.left + axtoccontrol1.width; axmapcontrol1.width = this.width - axtoccontrol1.width; ,二 创建桌面应用程序,6.创建第一个arcgis engine桌面应用程序-2,using esri.arcgis.systemui; private void form1_load(object sender, eventargs e) axtoolbarcontrol1.additem(esricontrols.controlsmapzoomintool, -1,
13、-1, true, 0, esricommandstyles.esricommandstyleicononly); axtoolbarcontrol1.additem(esricontrols.controlsmapzoomouttool, -1, -1, false, 0, esricommandstyles.esricommandstyleicononly); axtoolbarcontrol1.additem(esricontrols.controlsmapzoominfixedcommand, -1, -1, false, 0, esricommandstyles.esricomman
14、dstyleicononly); axtoolbarcontrol1.additem(esricontrols.controlsmapzoomoutfixedcommand, -1, -1, false, 0, esricommandstyles.esricommandstyleicononly); ,二 创建桌面应用程序,6.创建第一个arcgis engine桌面应用程序-2,private void form1_load(object sender, eventargs e) string filename =e:上课资料测绘08-gis开发mapsd.mxd; if ( axmapco
15、ntrol1.checkmxfile (filename) ) axmapcontrol1.loadmxfile(filename); /using esri.arcgis.carto; /iactiveview activeviw = axmapcontrol1.map as iactiveview; / activeviw.extent = axmapcontrol1.fullextent; /axmapcontrol1.refresh(); axtoccontrol1.setbuddycontrol(axmapcontrol1); axtoolbarcontrol1.setbuddyco
16、ntrol(axmapcontrol1); ,返回,三 地图基本操作实现,加载图层数据 地图显示基本控制,三 地图基本操作实现,1.加载图层数据,arcengine支持多种文件类型,矢量数据如:arcinfo coverage、esri shapefile、autocad的dxf和dwg文件等,栅格数据如jpg、tiff、bmp、grid等。此外还支持企业数据库中的矢量和栅格文件以及个人数据库文件等。,三 地图基本操作实现,1.加载图层数据shapefile文件,添加shapefile文件一般要用到workspace、workspacefactory、featureworkspace、feat
17、ureclass、featurelayer等组件类或者抽象类。,三 地图基本操作实现,1.加载图层数据shapefile文件,workspace类,workspace类表示工作区,它是空间数据和非空间数据集的容器,它是一个类,因此不能被直接创建,而只能从别的对象那里获得;它提供了使用和创建新的数据集的方法。根据esri workspace的不同, workspace可以分为以下几种: 文件系统工作区(filesystem workspace),shapefile和arcinfo的workspace属于这种; 本地数据库工作区(localdatabase workspace),例如microso
18、ft access中存储的个人地理数据库; 远程数据库工作区(remotedatabase workspace),例如存放在oracle、db2等中需要使用arcsde的相关组件来方位的地理数据库。,三 地图基本操作实现,1.加载图层数据shapefile文件,workspace类,从某种意义上来说,我们可以简单地认为一个工作区对应arcinfo的一个工作区,一个包含shapefile文件的文件夹。 workspace实现了26个接口,每个接口又有各自的方法和属性,我们在具体应用中往往根据需要选择性地使用这些方法和属性来达到我们的目的。,三 地图基本操作实现,1.加载图层数据shapefile
19、文件,workspacefactory类,workspacefactory是workspace的调配者,通过它用户可以打开工作区,它支持对工作区浏览和管理的方法,同时它也能够连接到远程工作区。 从它派生出很多类,如arcinfoworkspacefactory、cad workspacefactory、shapefile workspacefactory等。,三 地图基本操作实现,1.加载图层数据shapefile文件,featurelayer类,要素层,要素feature的集合及其可视化表达。,featureclass类,要素类,它是具有行为和属性的空间实体的集合;要素类中所有的要素都有同样
20、地属性字段;另外,它有一个专门存放几何图形的字段。,三 地图基本操作实现,1.加载图层数据shapefile文件,主要组件接口iworkspacefactory、ifeatureworkspace、ifeatureclass、ifeaturelayer的属性和方法介绍(参见帮助文件)。,三 地图基本操作实现,1.加载图层数据shapefile文件,iworkspacefactory,iworkspacefactory:主要负责创建和打开工作区的函数以及提供该workspacefactory的相关信息。,三 地图基本操作实现,1.加载图层数据shapefile文件,ifeatureworkspa
21、ce,ifeatureworkspace:主要负责创建和打开各种类型的数据源或者其他工作区的对象。,三 地图基本操作实现,1.加载图层数据shapefile文件,ifeaturelayer,ifeaturelayer:主要负责控制要素层的通用方面。,三 地图基本操作实现,1.加载图层数据shapefile文件,ifeatureclass,ifeatureclass:主要负责获得或设置要素类的属性。,三 地图基本操作实现,1.加载图层数据shapefile文件,ifeatureclass,ifeatureclass:主要负责获得或设置要素类的属性。,三 地图基本操作实现,1.加载图层数据shap
22、efile文件,private void 打开矢量toolstripmenuitem_click(object sender, eventargs e) iworkspacefactory pworkspacefactory; ifeatureworkspace pfeatureworkspace; ifeatureclass pfeatureclass; ifeaturelayer pfeaturelayer; pworkspacefactory = new shapefileworkspacefactoryclass(); pfeatureworkspace = pworkspacefac
23、tory.openfromfile(e:上课资料测绘08-gis开发map, 0) as ifeatureworkspace; pfeatureclass = pfeatureworkspace.openfeatureclass(区域); pfeaturelayer = new featurelayerclass(); pfeaturelayer.featureclass = pfeatureclass; pfeaturelayer.name = 区域; axmapcontrol1.addlayer(pfeaturelayer); axmapcontrol1.refresh(); ,using
24、 esri.arcgis.geodatabase; using esri.arcgis.carto; using esri.arcgis.datasourcesfile;,三 地图基本操作实现,1.加载图层数据shapefile文件,private void 打开矢量toolstripmenuitem_click(object sender, eventargs e) iworkspacefactory pworkspacefactory; ifeatureworkspace pfeatureworkspace; ifeatureclass pfeatureclass; ifeaturelay
25、er pfeaturelayer; pworkspacefactory = new shapefileworkspacefactoryclass(); pfeatureworkspace = pworkspacefactory.openfromfile(e:上课资料测绘08-gis开发map, 0) as ifeatureworkspace; pfeatureclass = pfeatureworkspace.openfeatureclass(区域); pfeaturelayer = new featurelayerclass(); pfeaturelayer.featureclass = p
26、featureclass; idataset pdataset = pfeatureclass as idataset; pfeaturelayer.name = pdataset.name; ilayer player = pfeaturelayer as ilayer; axmapcontrol1.map.addlayer(player); axmapcontrol1.refresh(); ,思考:如何利用对话框打开shapefile文件?,三 地图基本操作实现,1.加载图层数据栅格数据,栅格数据是gis中重要的数据源之一。有很强的表达能力,可以描述许多目标和事物,如高程和植被等。一般的栅
27、格数据有卫星图像、扫描的地图、照片等。由于存储格式的不同,栅格数据可以分为bmp、tif、jpg、grid等,这些都可为arcgis所支持。实际应用中,可将它们作为图层添加到工程中,然后进一步利用和分析。,三 地图基本操作实现,1.加载图层数据栅格数据,irasterlayer,irasterlayer :创建和修改栅格数据层。,三 地图基本操作实现,1.加载图层数据栅格数据,irasterlayer,三 地图基本操作实现,1.加载图层数据栅格数据,using esri.arcgis.datasourcesraster; createfromfilepath private void open
28、grid_click(object sender, eventargs e) irasterlayer prasterlayer = new rasterlayerclass(); prasterlayer.createfromfilepath(e:上课资料测绘08-gis开发mapsdjt.jpg); axmapcontrol1.addlayer(prasterlayer); axmapcontrol1.refresh(); ,三 地图基本操作实现,1.加载图层数据栅格数据,createfromdataset private void opengrid_click(object sender
29、, eventargs e) string filepath = e:上课资料测绘08-gis开发map; string filenam = sdjt.jpg; iworkspacefactory workspcfac = new rasterworkspacefactory(); irasterworkspace rasterworkspc; irasterdataset rasterdatst = new rasterdatasetclass(); irasterlayer rasterlay = new rasterlayerclass(); rasterworkspc = worksp
30、cfac.openfromfile(filepath, 0) as irasterworkspace; rasterdatst = rasterworkspc.openrasterdataset(filenam); rasterlay.createfromdataset(rasterdatst); axmapcontrol1.addlayer(rasterlay); axmapcontrol1.refresh(); ,三 地图基本操作实现,1.加载图层数据,三 地图基本操作实现,1.加载图层数据,三 地图基本操作实现,2.地图显示基本控制,放大、缩小、漫游和全图显示是gis、电子地图、图形处理
31、、图像处理等软件必备的基本功能,是用户通过有限的屏幕窗口去认识无限的地理空间必须具备的工具,是进行这类软件开发时必须开发的功能。 进行放大和缩小操作时,主要用到ienvelope接口,而漫游和全图显示主要用imapcontrol2接口。,三 地图基本操作实现,2.地图显示基本控制,ienvelope接口:envelopes是包含特定元素在内的矩形框。所有的几何对象通过x的最大最小值和y的最大最小值都有一个envelope。,ienvelope,三 地图基本操作实现,2.地图显示基本控制,ienvelope,三 地图基本操作实现,2.地图显示基本控制,ienvelope,三 地图基本操作实现,2
32、.地图显示基本控制,imapcontrol2,imapctrol2接口:主要负责控制mapcontrol控件。,三 地图基本操作实现,2.地图显示基本控制,imapcontrol2,三 地图基本操作实现,2.地图显示基本控制,放大(zoom in),using esri.arcgis.geometry; private void zoomin_click(object sender, eventargs e) ienvelope penvelope; penvelope = axmapcontrol1.extent; penvelope.expand(0.5, 0.5,true); axmap
33、control1.extent = penvelope; axmapcontrol1.refresh(); ,三 地图基本操作实现,2.地图显示基本控制,放大(zoom in),using esri.arcgis.geometry; using esri.arcgis.controls; private void axmapcontrol1_onmousedown(object sender, esri.arcgis.controls.imapcontrolevents2_onmousedownevent e) axmapcontrol1.mousepointer = esricontrols
34、mousepointer.esripointerzoomin; ienvelope ienvtrc; ienvtrc = axmapcontrol1.trackrectangle(); axmapcontrol1.extent = ienvtrc; ,三 地图基本操作实现,2.地图显示基本控制,放大(zoom in),using esri.arcgis.display; using esri.arcgis.geometry; using esri.arcgis.carto; using esri.arcgis.controls; private inewenvelopefeedback m_f
35、eedback; private ipoint m_point; private boolean m_ismousedown; private iactiveview m_pactiveview; private void axmapcontrol1_onmousedown(object sender, esri.arcgis.controls.imapcontrolevents2_onmousedownevent e) m_pactiveview = axmapcontrol1.activeview; m_point = m_pactiveview.screendisplay.display
36、transformation.tomappoint(e.x, e.y); axmapcontrol1.mousepointer = esricontrolsmousepointer.esripointerpagezoomout; m_ismousedown = true; ,三 地图基本操作实现,2.地图显示基本控制,放大(zoom in),private void axmapcontrol1_onmousemove(object sender, esri.arcgis.controls.imapcontrolevents2_onmousemoveevent e) if (!m_ismouse
37、down) return; if (m_feedback = null) m_feedback = new newenvelopefeedbackclass(); m_feedback.display = m_pactiveview.screendisplay; m_feedback.start(m_point); m_feedback.moveto(m_pactiveview.screendisplay.displaytransformation.tomappoint(e.x, e.y); ,三 地图基本操作实现,2.地图显示基本控制,private void axmapcontrol1_onmouseup(object sender, esri.arcgis.controls.imapcontrolevents2_onmouseupevent e) if (!m_ismousedown) return; ienvelope penvelope; if (m_feedback = null) penvelope = m_pactiveview.extent; penvelope.expand(2, 2, true); penvelop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T型连接高强螺栓受拉承载力设计方法及可靠性研究
- 基于TPACK理论的师范生人工智能素养现状及培养策略研究
- 编制会议材料培训
- 猫和老鼠手绘课件设计指南
- 体外诊断试剂性能指标
- 领航职业英语课件
- 颅脑CTA技术课件
- 预防踩踏事故班会课件
- 预防毒品安全知识课件
- 预防小学生溺水的课件
- 2025全员安全生产责任制范本
- 林业行政执法培训
- 电大考试试题及答案商法
- 广西壮族自治区柳州市上进联考2024-2025学年高一下学期6月期末联合考试数学试题(含答案)
- 八年级暑假前家长会课件
- 福建省南平市2024-2025学年八年级下学期期末考试数学试卷(含答案)
- 2025年河南省高考地理试卷真题(含答案)
- 2025届广东省惠州惠城区五校联考英语八下期末检测试题含答案
- 工厂绩效计件方案(3篇)
- 2025年湖南省中考历史试卷真题(含答案)
- 高中英语必背3500单词表完整版
评论
0/150
提交评论