欢迎来到天天文库
浏览记录
ID:19875356
大小:1.73 MB
页数:36页
时间:2018-10-07
《gis 二次开发 地图的组成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四讲地图的组成王佳34247763@qq.com主要内容地图(Map)图层(Layer)元素(Element)第一节地图(Map)地图是GIS中的重要概念,也是GIS的应用中的成果,GIS的很多成果都是用地图来说话的,当我们打开ArcMap程序后,首先看到的是数据视图(ArcMap有两种视图,数据视图和布局视图)我们看到的这个数据视图其实就是一个Map对象。在ArcMap中Map是由文档对象控制的,每一个MXD的文档文件中至少包含一个Map对象,但是在一个时刻,仅仅只能有一个Map处于使用状态,在程序中这样的Map为“Foc
2、usMap”,每一个对象都用机会成为FocusMap。IActiveViewpActiveView=axMapControl1.ActiveView.FocusMapasIActiveView;可以利用IMxDocument接口的maps属性获得可以操作文档中的所有地图对象集合。利用FocusMap属性获得焦点地图。在ArcMap中,可以显示在Map中的数据有两大类,也就是地理数据和图形元素,空间数据是GIS分析制图的数据源,保存在地理数据库库或者Shp文件中,图形元素也是一种可以在Map上显示的对象。他们两个的共同特征是拥有
3、一个geomtry属性。元素,是另一种可以显示在Map上的对象,它分为两部分一类是图形元素,一类是框架元素,图形元素可以显示出来,而框架元素充当了“容器”的角色。在ArcMap中可以使用“Draw”工具在Map上直接绘制一个矩形,圆形,文本等对象。在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这些都是图形元素,用于地图制图输出。Map对象深入理解:Map对象是由MxDocument对象通过MapFrame对象管理的,MapFrame对象是一种框架元素。Map对象具有双重身份,一方面是数据的管理容器,可以引入地理数
4、据和可视化元素,扮演了一个数据管理器的角色;另一方面又是它可以让用户看到这些数据,即扮演了数据显示器的角色。当我们程序员把地理数据加载到Map对象时,它是数据管理者;在刷新地图、改变显示范围时,它就是一个数据显示者。Map双重身份!!!!!地图对象是地图数据的容器,它由图层和图形数据组成。Map对象实现了众多的接口我们重点研究:ImapIActiveViewIGraphicsContainerIMap接口该接口主要用于管理Map对象中的图层对象,要素选择集和空间参考等对象,IMap接口也往往是我们一个任务的起点。使用IMap接
5、口,我们可以获取这个Map对象中的图层的个数,可以添加图层,删除图层,还可以利用IMap实现查询的高亮显示。IMap接口添加Shp图层功能实现(AddLayer方法)步骤:1利用OpenFileDialog找到Shp图层2创建工作空间工厂3打开要素类4创建要素图层5关联图层和要素类6添加到地图控件中openFileDialog1=newOpenFileDialog();openFileDialog1.Title="打开图层文件";openFileDialog1.Filter="mapdocuments(*.shp)
6、*.shp
7、";openFileDialog1.ShowDialog();FileInfofileInfo=newFileInfo(openFileDialog1.FileName);stringpPath=openFileDialog1.FileName;stringpFolder=System.IO.Path.GetDirectoryName(pPath);stringpFileName=System.IO.Path.GetFileName(pPath);IWorkspaceFactorypWorkspaceFactory=newSh
8、apefileWorkspaceFactory();IWorkspacepWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);IFeatureWorkspacepFeatureWorkspace=pWorkspaceasIFeatureWorkspace;IFeatureClasspFC=pFeatureWorkspace.OpenFeatureClass(pFileName);IFeatureLayerpFLayer=newFeatureLayer();pFLayer.Fe
9、atureClass=pFC;pFLayer.Name=pFC.AliasName;ILayerpLayer=pFLayerasILayer;IMappMap=axMapControl1.Map;pMap.AddLayer(pLayer);axMapControl1.Acti
此文档下载收益归作者所有