码迷,mamicode.com
首页 > 其他好文 > 详细

ArcGIS Engine开发之地图基本操作(3)

时间:2016-09-16 00:11:51      阅读:947      评论:0      收藏:0      [点我收藏+]

标签:

地图数据的加载

一、加载Shapefile数据

Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式。加载Shapefile数据的方式有两种:①通过工作空间加载。②通过MapControl控件的AddShapefile方法加载。

1、通过工作空间加载Shapefile文件

通过工作空间加载Shapefile文件主要用到IMap、ILayer、IFeatureLayer和IFeatureClass四个接口。

1)IMap接口

IMap接口是对地图进行操作的起点,主要用于管理Map对象中的图层对象、要素选择集和空间参考等对象。使用IMap接口,可以获取Map对象中的图层个数,对图层进行添加、删除,还可以利用IMap接口实现查询的高亮的显示。

2)ILayer接口

ILayer接口是图层对象的通用接口,它提供了操作图层的属性和方法,可用于所有的图层,如要素图层(FeatureLayer)、栅格图层(RasterLayer)和图形图层集合(CompositeGraphicsLayer)等

3)IFeatureLayer

IFeatureLayer接口继承自ILayer接口,提供了访问基于矢量数据图层的属性和方法,图层的数据可以是GeoDatabase、ShapeFile或者Coverage数据。如果使用FeatureLayer组件类,还可以通过IGeoFeatureLayer接口获取更多的属性和方法。IGeoFeatureLayer接口除了完全包含IFeatureLayer接口的属性和方法外,还提供了更多的控制要素图层的属性和方法,如注记属性(AnnotationPropperties)、注记显示设置(DisplayAnnotation)等。

4)IFeatureClass接口

IFeatureClass接口是获取和设置要素类属性的主要接口。如获取要素类的类型,得到满足某个查询条件的要素个数,或在要素类中创建一个新的功能等。

注意事项:Map、Layer、FeatureLayer三者之间的关系如下:Map是很多图层的集合,就像ArcMap的MXD文档一样,可以很多Layer;Layer是图层对象,是数据的外壳,必须建立在数据的基础上才有意义;FeatureLayer是具体的要素图层,需要经过Layer添加到Map中进行显示。

   FeatureLayer、FeatureClass之间的区别:

1)FeatureLayer是加载在地图文档中的矢量数据层,只是要素类的表现形式。FeaturClass是一组空间实体的集合,在数据表中存储了统一的属性和行为,每一个FeatureClass都有一个Geometry类型。

2)FeatureLayer接口继承自ILayer接口,IFeatureClass接口继承自IClass接口。

3)FeatureLayer可以创建自己的对象,而FeatureClass不行;FeatureLayer、FeatureClass的获取方法如下:

IFeatureLayer pFeatureLayer=mainMapControl.get_layer(0) as IFeatureLayer;

IFeatureClass pFeatureClass=pFeatureLayer.FeatureClass;

具体的代码展示:

  OpenFileDialog pOpenFileDialog = new OpenFileDialog();
            pOpenFileDialog.CheckFileExists = true;//值检查
            pOpenFileDialog.Title = "打开Shape文件";
            pOpenFileDialog.Filter = "Shape文件(*.Shp)|*.shp";
            pOpenFileDialog.ShowDialog();
            //获取文件路径
            //分别实例化接口对象
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            string pFullPath = pOpenFileDialog.FileName;//
            if (pFullPath == "") return;
            int pIndex = pFullPath.LastIndexOf("\\");
            string pFilePath = pFullPath.Substring(0, pIndex);//文件路径
            string pFileName = pFullPath.Substring(pIndex + 1);//文件名
            //实例化ShapefileWorkspaceFactory工作空间,打开Shapefile文件
            pWorkspaceFactory = new ShapefileWorkspaceFactory();
            pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0);
            //创建实例化要素集
            IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pFileName);
            pFeatureLayer = new FeatureLayer();
            pFeatureLayer.FeatureClass = pFeatureClass;
            pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
            ClearAllData();//删除所有已加载的数据
            mainMapControl.Map.AddLayer(pFeatureLayer);
            mainMapControl.ActiveView.Refresh();//进行地图的刷新
            //同步鹰眼
           // SynchronizeEye();

2.通过MapControl的AddShapefile方法加载Shapefile文件

用MapControl控件的AddShapefile方法同样可加载Shapefile文件,这样省去了建立工作空间、数据集等步骤。调用该方法需要传入两个参数,分别是文件路径和不带扩展名的文件名。调用方法如下:

mainMapControl.AddShapefile(string Path,string filename);

二、加载栅格数据

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ArcGIS Engine开发之地图基本操作(3)

标签:

原文地址:http://www.cnblogs.com/dongteng/p/5875675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!