欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    ArcEngine地图基本操作的实现.ppt

    • 资源ID:5364820       资源大小:3.23MB        全文页数:58页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ArcEngine地图基本操作的实现.ppt

    第九章 地图基本操作的实现,中国石油大学(华东)地球科学与技术学院测绘系,地理信息系统设计与开发,本 章 内 容,使用ArcEngine控件开发创建桌面应用程序地图基本操作实现,一 使用ArcEngine控件开发,ArcEngine提供大量高级开发控件,使开发人员可以建立或扩展GIS应用程序和创建高质量的地图用户界面。包括MapControl、PageLayoutControl、ReaderControl、TOCControl和ToolbarControl。GlobeControl和SceneControl也可以获得,但使用这两个控件的应用程序必须具有ArcEngine的3D分析选项授权。,一 使用ArcEngine控件开发,嵌入式组件:可拖放到可视化设计环境提供的容器窗体或对话框中,并可调整控件的大小和位置。属性页:右键单击控件并选择“属性”菜单项。ArcObjects:每个控件为其封装的ArcObjects上频繁使用的属性和方法提供了快捷方式;每个控件还有一个执行公共任务的帮助方法。事件:每个控件都会响应终端用户的键盘和鼠标交互而触发事件。响应发生在控件内的行为会触发一些其他事件。,1.ArcGIS控件主题和概念,一 使用ArcEngine控件开发,1.ArcGIS控件主题和概念,伙伴控件:ToolbarControl和TOCControl都要与另一个“伙伴控件”协同工作。控件命令:ArcEngine提供了一系列命令、工具和菜单与ArcGIS控件协同工作;开发人员也可以通过创建自定义命令、工具和菜单来扩展ArcEngine提供的命令集。地图制作:ArcGIS Desktop应用程序可用于预制作能被装载到ArcGIS控件中的文档,以便快速生产高质量的地图。,一 使用ArcEngine控件开发,2.MapControl和PageLayoutControl,MapControl和PageLayoutControl对应于ArcMap桌面应用程序的“数据”和“布局”视图。用ArcMap创作的地图文档可以装载到这两个控件中。地图文档可在设计时通过这两个控件的属性页设置,控件可以被设置为“链接”或“包含”地图文档;地图文档也可以使用LoadMxFile方法通过编程装载到控件中。MapControl和PageLayoutControl不仅可以读取地图文档,还可以写入地图文档(*.mxd)。,一 使用ArcEngine控件开发,3.GlobeControl和SceneControl,GlobeControl和SceneControl对应于ArcGlobe和ArcScene桌面应用程序的三维试图。用ArcGlobe和ArcScene应用程序创作的Globe和Scene文档可以分别装载到GlobeControl和SceneControl中。这两个控件都具有内置的导航功能,运行终端用户移动三维视图和可视化三维数据,而不必使用控件命令。要使用内置的导航工具,必须通过属性页或者编程设置Navigate属性。,一 使用ArcEngine控件开发,4.ReaderControl,ReaderControl对应于ArcReader桌面应用程序的“数据”和“布局”视图及其内容表(TOC)。该控件还包含ArcReader桌面应用程序使用的内部窗口和工作,如Find窗口和Identify工具等。用ArcMap桌面应用程序创造并用ArcGIS Publisher扩展模块发布的发布地图文档(PMF)若在发布时设置为允许装载到定制的ArcReader应用程序中,则可以装载到ReaderControl中。ReaderControl中有一个简单的自包含对象模型,提供ArcReader桌面应用程序所有功能而不需要访问ArcObjects。,一 使用ArcEngine控件开发,5.TOCControl和ToolbarControl,TOCControl要与一个“伙伴控件”协同工作。“伙伴控件”可在设计时通过TOCControl属性页设置或在驻留TOCControl的容器被显示时用SetBuddyControl方法通过编程设置。ToolbarControl要与一个“伙伴控件”协同工作。“伙伴控件”可在设计时通过ToolbarControl属性页设置或在驻留ToolbarControl的容器被显示时用SetBuddyControl方法通过编程设置。ToolbarControl可以驻留操作其“伙伴控件”显示的命令、工具和菜单。,返回,二 创建桌面应用程序,1.目标,创建第一个ArcGIS Engine桌面应用程序加载MXD文档,2.准备工作,Visual Studio 2005/2008ArcGIS Engine Developer kit 9.2制作ArcGIS实验数据地图文档MXD,二 创建桌面应用程序,3.设计流程图,二 创建桌面应用程序,4.创建第一个ArcGIS Engine桌面应用程序-1,二 创建桌面应用程序,可以看到新创建的项目中自动加载了ToolBarControl、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窗体”标签栏中单击右键,然后从上下文菜单中选择“选择项”(VS2005)“添加/移除项(I)”(VS2003);或者工具-选择工具箱。4.在“选择工具箱”中选择“.NET Framework组件”,并复选“AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“AxToolbarControl”,单击确定按钮。这样所选择的控件将显示在工具箱的Windows窗体标签栏中。,二 创建桌面应用程序,6.创建第一个ArcGIS Engine桌面应用程序-2,二 创建桌面应用程序,6.创建第一个ArcGIS Engine桌面应用程序-2,二 创建桌面应用程序,6.创建第一个ArcGIS 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;axTOCControl1.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.Height;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,-1,true,0,esriCommandStyles.esriCommandStyleIconOnly);axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutTool,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);axToolbarControl1.AddItem(esriControls.ControlsMapZoomInFixedCommand,-1,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);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(axMapControl1.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.SetBuddyControl(axMapControl1);,返回,三 地图基本操作实现,加载图层数据地图显示基本控制,三 地图基本操作实现,1.加载图层数据,ArcEngine支持多种文件类型,矢量数据如:ArcInfo Coverage、ESRI Shapefile、AutoCAD的DXF和DWG文件等,栅格数据如JPG、TIFF、BMP、GRID等。此外还支持企业数据库中的矢量和栅格文件以及个人数据库文件等。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,添加ShapeFile文件一般要用到Workspace、WorkspaceFactory、FeatureWorkspace、FeatureClass、FeatureLayer等组件类或者抽象类。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,Workspace类,Workspace类表示工作区,它是空间数据和非空间数据集的容器,它是一个类,因此不能被直接创建,而只能从别的对象那里获得;它提供了使用和创建新的数据集的方法。根据esri Workspace的不同,Workspace可以分为以下几种:文件系统工作区(Filesystem Workspace),Shapefile和ArcInfo的Workspace属于这种;本地数据库工作区(LocalDatabase Workspace),例如Microsoft Access中存储的个人地理数据库;远程数据库工作区(RemoteDatabase Workspace),例如存放在Oracle、DB2等中需要使用ArcSDE的相关组件来方位的地理数据库。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,Workspace类,从某种意义上来说,我们可以简单地认为一个工作区对应ArcInfo的一个工作区,一个包含Shapefile文件的文件夹。Workspace实现了26个接口,每个接口又有各自的方法和属性,我们在具体应用中往往根据需要选择性地使用这些方法和属性来达到我们的目的。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,WorkspaceFactory类,WorkspaceFactory是Workspace的调配者,通过它用户可以打开工作区,它支持对工作区浏览和管理的方法,同时它也能够连接到远程工作区。从它派生出很多类,如ArcInfoWorkspaceFactory、Cad WorkspaceFactory、Shapefile WorkspaceFactory等。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,FeatureLayer类,要素层,要素Feature的集合及其可视化表达。,FeatureClass类,要素类,它是具有行为和属性的空间实体的集合;要素类中所有的要素都有同样地属性字段;另外,它有一个专门存放几何图形的字段。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,主要组件接口IWorkspaceFactory、IFeatureWorkspace、IFeatureClass、IFeatureLayer的属性和方法介绍(参见帮助文件)。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,IWorkspaceFactory,IWorkspaceFactory:主要负责创建和打开工作区的函数以及提供该WorkspaceFactory的相关信息。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,IFeatureWorkspace,IFeatureWorkspace:主要负责创建和打开各种类型的数据源或者其他工作区的对象。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,IFeatureLayer,IFeatureLayer:主要负责控制要素层的通用方面。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,IFeatureClass,IFeatureClass:主要负责获得或设置要素类的属性。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,IFeatureClass,IFeatureClass:主要负责获得或设置要素类的属性。,三 地图基本操作实现,1.加载图层数据ShapeFile文件,private void 打开矢量ToolStripMenuItem_Click(object sender,EventArgs e)IWorkspaceFactory pWorkspaceFactory;IFeatureWorkspace pFeatureWorkspace;IFeatureClass pFeatureClass;IFeatureLayer pFeatureLayer;pWorkspaceFactory=new ShapefileWorkspaceFactoryClass();pFeatureWorkspace=pWorkspaceFactory.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 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;IFeatureLayer pFeatureLayer;pWorkspaceFactory=new ShapefileWorkspaceFactoryClass();pFeatureWorkspace=pWorkspaceFactory.OpenFromFile(E:上课资料测绘08-GIS开发map,0)as IFeatureWorkspace;pFeatureClass=pFeatureWorkspace.OpenFeatureClass(区域);pFeatureLayer=new FeatureLayerClass();pFeatureLayer.FeatureClass=pFeatureClass;IDataset pDataset=pFeatureClass as IDataset;pFeatureLayer.Name=pDataset.Name;ILayer pLayer=pFeatureLayer as ILayer;axMapControl1.Map.AddLayer(pLayer);axMapControl1.Refresh();,思考:如何利用对话框打开ShapeFile文件?,三 地图基本操作实现,1.加载图层数据栅格数据,栅格数据是GIS中重要的数据源之一。有很强的表达能力,可以描述许多目标和事物,如高程和植被等。一般的栅格数据有卫星图像、扫描的地图、照片等。由于存储格式的不同,栅格数据可以分为bmp、tif、jpg、grid等,这些都可为ArcGIS所支持。实际应用中,可将它们作为图层添加到工程中,然后进一步利用和分析。,三 地图基本操作实现,1.加载图层数据栅格数据,IRasterLayer,IRasterLayer:创建和修改栅格数据层。,三 地图基本操作实现,1.加载图层数据栅格数据,IRasterLayer,三 地图基本操作实现,1.加载图层数据栅格数据,using ESRI.ArcGIS.DataSourcesRaster;CreateFromFilePathprivate void opengrid_Click(object sender,EventArgs e)IRasterLayer pRasterLayer=new RasterLayerClass();pRasterLayer.CreateFromFilePath(E:上课资料测绘08-GIS开发mapSDJT.JPG);axMapControl1.AddLayer(pRasterLayer);axMapControl1.Refresh();,三 地图基本操作实现,1.加载图层数据栅格数据,CreateFromDatasetprivate void opengrid_Click(object sender,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=workspcFac.OpenFromFile(filePath,0)as IRasterWorkspace;rasterDatst=rasterWorkspc.OpenRasterDataset(fileNam);rasterLay.CreateFromDataset(rasterDatst);axMapControl1.AddLayer(rasterLay);axMapControl1.Refresh();,三 地图基本操作实现,1.加载图层数据,三 地图基本操作实现,1.加载图层数据,三 地图基本操作实现,2.地图显示基本控制,放大、缩小、漫游和全图显示是GIS、电子地图、图形处理、图像处理等软件必备的基本功能,是用户通过有限的屏幕窗口去认识无限的地理空间必须具备的工具,是进行这类软件开发时必须开发的功能。进行放大和缩小操作时,主要用到IEnvelope接口,而漫游和全图显示主要用IMapControl2接口。,三 地图基本操作实现,2.地图显示基本控制,IEnvelope接口:Envelopes是包含特定元素在内的矩形框。所有的几何对象通过X的最大最小值和Y的最大最小值都有一个Envelope。,IEnvelope,三 地图基本操作实现,2.地图显示基本控制,IEnvelope,三 地图基本操作实现,2.地图显示基本控制,IEnvelope,三 地图基本操作实现,2.地图显示基本控制,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);axMapControl1.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=esriControlsMousePointer.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_feedBack;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.DisplayTransformation.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_isMouseDown)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);pEnvelope.CenterAt(m_point);else pEnvelope=m_feedBack.Stop();m_pActiveView.Extent=pEnvelope;m_pActiveView.Refresh();m_feedBack=null;m_isMouseDown=false;,三 地图基本操作实现,2.地图显示基本控制,缩小(Zoom Out),using ESRI.ArcGIS.Geometry;private void ZoomIn_Click(object sender,EventArgs e)IEnvelope pEnvelope;pEnvelope=axMapControl1.Extent;pEnvelope.Expand(2,2,true);axMapControl1.Extent=pEnvelope;axMapControl1.Refresh();,三 地图基本操作实现,2.地图显示基本控制,缩小(Zoom Out),private void axMapControl1_OnMouseDown(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)IEnvelope IEnvTrc1;IEnvelope IEnvTrc2;IEnvTrc1=axMapControl1.TrackRectangle();IEnvTrc2=axMapControl1.Extent;IEnvTrc2.Expand(IEnvTrc2.Width/IEnvTrc1.Width,IEnvTrc2.Height/IEnvTrc1.Height,true);axMapControl1.Extent=IEnvTrc2;axMapControl1.Refresh();,三 地图基本操作实现,2.地图显示基本控制,漫游(Pan),private void axMapControl1_OnMouseDown(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)axMapControl1.MousePointer=esriControlsMousePointer.esriPointerPageZoomOut;axMapControl1.Pan();,三 地图基本操作实现,2.地图显示基本控制,全图(Full Extent),using ESRI.ArcGIS.Geometry;private void FullExtent_Click(object sender,EventArgs e)axMapControl1.Extent=axMapControl1.FullExtent;,返回,

    注意事项

    本文(ArcEngine地图基本操作的实现.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开