ArcEngine开发与ArcGIS基础知识 - 2
<!--本文仅供初学者学习使用。如有错误,敬请指正。-->
四、IFeatureLayer (ESRI.ArcGIS.Carto)
此接口为矢量图层接口。
(1)此接口只作为展示图层使用,对其对象操作并不会对数据源产生影响
(2)通过该接口可以修改图层的名称,图层是否可见,图层展示所用投影,例如:
//// 命名图层 IFeatureLayer pFeatureLayer = ; //// 需要操作的图层 pFeatureLayer.Name = "test"; //// 定义投影 ISpatialReference pSpatialReference = ;//// 需要的投影 pFeatureLayer.SpatialReference = pSpatialReference; //// 设置是否可见 pFeatureLayer.Visible = false;
再次强调,IFeatureLayer只会对显示产生影响,并不会修改数据源,所以这里命名图层只是修改图层的名字;赋值投影也不会给数据源做投影,另外IFeatureLayer的投影只可写入、不能获取,想要获取投影还是要在数据源处获得。
(3)通过IFeatureLayer接口可以获取和修改数据源,这里就要引入ArcGIS矢量数据操作中最重要的接口IFeatureClass,先说结论IFeatureClass就是IFeatureLayer的数据源。示例:
//// 获取图层上的数据源 IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //// 修改图层上的数据源 pFeatureClass = ;////从别处获取数据源 pFeatureLayer.FeatureClass = pFeatureClass;
(4)IFeatureLayer提供了Search方法,Search的结果是IFeatureCursor。这里牵扯了后面许多的概念,就不做示例了,可以先有个印象。
五、IWorkspaceFactory (ESRI.ArcGIS.GeoDatabase)
上一个接口引出了一个非常重要的接口IFeatureClass,但在讲这个接口之前,让我们在来梳理一下逻辑。
前四个接口,只有IMapDocument涉及到了文件(.mxd),其余的接口与真实的数据都没有什么关系,所以(.mxd)文件其实相当于一个索引文件,本身不存储数据,只存储真实数据的位置,而剩下三个接口则都用来显示。只能显示不能操作的地图就像是无本之木,无源之水,所以在说IFeatureClass之前,应该先从数据的角度重新认识一下IFeatureClass。
所以,还是从最外层的IWorkspaceFactory开始说起。
(1)该接口主要作用是打开不同数据类型的工作空间,所以应该先看看我们的ArcGIS都能创建哪些文件,这些文件虽然可以使用ArcMap来创建,但还是有些麻烦,好在ArcGIS提供了自己的数据组织软件——ArcCatalog
从图中可以看到ArcCatalog可以创建哪写文件,这里挑一些我平时用的比较多的依次介绍一下
1. Folder 这个最简单,就是建个文件夹
2.File Geodatabase 这个是ArcGIS自己组织的数据库格式,在电脑里看就是一个以(.gdb)结尾的文件夹
3.Personal Geodatabase 这个是将数据存在了Access数据库里(.mdb文件)
4.DatabaseConnection 联网的数据库,常用的是Oracle和SQL Server
5.ArcGIS Server Connection WebGIS相关的连接(网页不怎么会,呜呜呜
6.Layer 这时有小伙伴就要问了,这不是能创建Layer嘛,前面在说什么,Layer不是可以当数据源嘛。先别急,创建一个就知道了。
喏,点击创建就会让你指定一个数据源
7.ShapeFile 这个就是文件意义上的IFeatureClass了,当然这只是它的一种来源。
(2)这些文件(夹)都可以通过IWorkspaceFactory打开(当然除了Folder),这里简单举几个例子:
////不同的对象要引用不同的dll IWorkspaceFactory pWorkspaceFactory = null;
pWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); //// ESRI.ArcGIS.DataSourcesGDB (File Geodatabase)
pWorkspaceFactory = new AccessWorkspaceFactoryClass(); ////ESRI.ArcGIS.DataSourcesGDB (Personal Geodatabase)
pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); ////ESRI.ArcGIS.DataSourcesFile (ShapeFile)
这篇随笔就写到这了,下一篇将会介绍各个文件的含义,如有错误也请各位小伙伴指正。