gis二次开发地图的组成.ppt
《gis二次开发地图的组成.ppt》由会员分享,可在线阅读,更多相关《gis二次开发地图的组成.ppt(36页珍藏版)》请在三一办公上搜索。
1、第四讲 地图的组成,王佳,主要内容,地图(Map)图层(Layer)元素(Element),第一节 地图(Map),地图是GIS中的重要概念,也是GIS的应用中的成果,GIS的很多成果都是用地图来说话的,当我们打开ArcMap程序后,首先看到的是数据视图(ArcMap有两种视图,数据视图和布局视图)我们看到的这个数据视图其实就是一个Map对象。,在ArcMap中Map是由文档对象控制的,每一个MXD的文档文件中至少包含一个Map对象,但是在一个时刻,仅仅只能有一个Map处于使用状态,在程序中这样的Map为“FocusMap”,每一个对象都用机会成为FocusMap。IActiveView pA
2、ctiveView=axMapControl1.ActiveView.FocusMap as IActiveView;可以利用IMxDocument接口的maps属性获得可以操作文档中的所有地图对象集合。利用FocusMap属性获得焦点地图。,在ArcMap中,可以显示在Map中的数据有两大类,也就是地理数据和图形元素,空间数据是GIS分析制图的数据源,保存在地理数据库库或者Shp文件中,图形元素也是一种可以在Map上显示的对象。他们两个的共同特征是拥有一个geomtry属性。,元素,是另一种可以显示在Map上的对象,它分为两部分一类是图形元素,一类是框架元素,图形元素可以显示出来,而框架元素
3、充当了“容器”的角色。在ArcMap中可以使用“Draw”工具在Map上直接绘制一个矩形,圆形,文本等对象。,在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这些都是图形元素,用于地图制图输出。,Map对象深入理解:Map对象是由MxDocument对象通过MapFrame对象管理的,MapFrame对象是一种框架元素。Map对象具有双重身份,一方面是数据的管理容器,可以引入地理数据和可视化元素,扮演了一个数据管理器的角色;另一方面又是它可以让用户看到这些数据,即扮演了数据显示器的角色。当我们程序员把地理数据加载到Map对象时,它是数据管理者;在刷新地图、改变显示范围时,它就是一个
4、数据显示者。Map 双重身份!,地图对象是地图数据的容器,它由图层和图形数据组成。Map对象实现了众多的接口,我们重点研究:ImapIActiveViewIGraphicsContainer,IMap接口,该接口主要用于管理Map对象中的图层对象,要素选择集和空间参考等对象,IMap接口也往往是我们一个任务的起点。使用IMap接口,我们可以获取这个Map对象中的图层的个数,可以添加图层,删除图层,还可以利用IMap实现查询的高亮显示。,IMap接口,添加Shp图层功能实现(AddLayer方法)步骤:1 利用OpenFileDialog 找到Shp图层2 创建工作空间工厂3 打开要素类4 创建
5、要素图层5 关联图层和要素类6 添加到地图控件中,openFileDialog1=new OpenFileDialog();openFileDialog1.Title=打开图层文件;openFileDialog1.Filter=map documents(*.shp)|*.shp;openFileDialog1.ShowDialog();FileInfo fileInfo=new FileInfo(openFileDialog1.FileName);string pPath=openFileDialog1.FileName;string pFolder=System.IO.Path.GetDi
6、rectoryName(pPath);string pFileName=System.IO.Path.GetFileName(pPath);IWorkspaceFactory pWorkspaceFactory=new ShapefileWorkspaceFactory();IWorkspace pWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);IFeatureWorkspace pFeatureWorkspace=pWorkspace as IFeatureWorkspace;IFeatureClass pFC=pFeatureWork
7、space.OpenFeatureClass(pFileName);IFeatureLayer pFLayer=new FeatureLayer();pFLayer.FeatureClass=pFC;pFLayer.Name=pFC.AliasName;ILayer pLayer=pFLayer as ILayer;IMap pMap=axMapControl1.Map;pMap.AddLayer(pLayer);axMapControl1.ActiveView.Refresh();,Imap接口,删除Shp图层功能实现(DeleteLayer方法)步骤:1 获得当前地图控件中的地图2 在地图
8、中获得最上面的一个数据层3 删除数据层,IMap pMap=axMapControl1.Map;ILayer pLayer=pMap.get_Layer(0);pMap.DeleteLayer(pLayer);,Imap接口,AddLayers方法,不同于AddLayer方法一次添加一个对象到Map中,AddLayers可以一次加入一个或多个图层,当然多个图层对象要放到EnumLayer对象中才能引入,EnumLayer对象是一个图层枚举对象,可以保存多个图层的指针。ClearLayers方法,不同于DeleteLayer方法一次删除一个图层,ClearLayers可以一次清除Map对象中的所
9、有图层;LayerCount 属性,指明这个Map对象中一共有多少个图层对象,Imap接口,在添加地图的过程中,第一个加入Map对象图层是0号,第二个图层是1号,依次类推,0号是放在图层对话框中最上面,但是在地图中实际是放在最下面。如果在一个Map中放入两个polygon类型的图层,会发现第一次加入的图层被后一次加入的图层所掩盖。(ArcMap为例)这样层概念是GIS数据组织的一种有效形式。,IMap接口,在ArcMap中,使用“Select Features”工具在地图上拖拽以后,被选中的要素将会高亮显示,即使这些要素放在不同的图层上。这个工具没有什么限制,不管是点、线或者多边形,它都可以同
10、时选,IMap接口,被高亮显示的要素称为“FeatureSelection”(要素选择集),程序有多种方式可以用于选择要素,比如SelectByShape方法就是其中之一,IMap pMap=axMapControl1.Map;pActiveView=pMap as IActiveView;objEnvelope=axMapControl1.TrackRectangle();ISelectionEnvironment pSelectionEnvironment=new SelectionEnvironment();pMap.SelectByShape(objEnvelope,pSelectio
11、nEnvironment,false);,SelectByShape方法实现了ArcMap中“Select Features”命令的角色,它选择Map里面所有处于拖拽范围内的Featurelayer的要素,无论是哪个图层,他把选择的要素添加到Map的FeatureSelection中。,IGraphicsContainer接口,Map对象可以显示图形元素(Element),它使用IGraphicsContainer接口来管理这些元素对象(包括图形元素和框架元素)。,使用这个接口可以完成元素添加、更新和删除元素的方法添加元素是一个往其中一个图形图层上添加元素的对象的过程,如下代码所示,IGrap
12、hicsContainer graphicsContainer;IMap map=this.axMapControl1.Map;ILineElement lineElement=new LineElementClass();IElement element;IPolyline polyline=new PolylineClass();IPoint point=new PointClass();point.PutCoords(1,5);polyline.FromPoint=point;point.PutCoords(80,5);polyline.ToPoint=point;IElement el
13、ement=lineElement as IElement;接口查询!其实没有必要用lineElement,实际上也是继承 element.Geometry=polyline as IGeometry;graphicsContainer=map as IGraphicsContainer;graphicsContainer.AddElement(element,0);this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);(添加元素后一定要刷新,不然无法显示),IGra
14、phicsContainer接口,更新元素:用户改变了是Map中一个元素的形状或者符号,用户一定希望它能够及时更新后在地图上显示出来,用到UpdateElement,IGraphicsContainer graphicsContainer;IPolyline polyline=new PolylineClass();IPoint point=new PointClass();point.PutCoords(1,5);polyline.FromPoint=point;point.PutCoords(80,20);polyline.ToPoint=point;IElement el;graphic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- gis 二次开发 地图 组成

链接地址:https://www.31ppt.com/p-5431978.html