ArcGIS Engine开发之地图基本操作

Posted 东腾的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS Engine开发之地图基本操作相关的知识,希望对你有一定的参考价值。

地图数据的加载

一、加载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开发之地图基本操作的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS Engine开发之地图基本操作

ArcGIS Engine开发之地图导出

ArcGIS Engine开发之地图文档保存

ArcGIS Engine开发之地图浏览

ArcGIS Engine开发之空间查询

ArcGIS Engine开发之视图同步