学习AE一段时间了,总是对QI不是很理解,今天一晚上写了QI实例,尝试理解下。

  1. 首先想到的是→改变空间参考→alter、SpatialReference→alterSpatialReference,输入到帮助文档里。  

查看是IGeoDatasetSchemaEdit接口的方法,那么我们能想到:A.要实例化一个IGeoDatasetSchemaEdit接口变量.B.要得到一个空间参考,也就是改变成什么样的空间参考。我们再在搜索里输入:createSpatialReference→

通过以下这段代码我们知道,CreateSpatialReference根据srID(空间参考ID),创建的空间参考有可能是地理坐标系,也有可能是投影坐标系。

我的参考教程是创建一个地理坐标系,不管是地理坐标系还是投影坐标系,反正空间参考要创建一个,接下来就是解决A的问题了:要实例化一个IGeoDatasetSchemaEdit接口变量。因为接口变量是不能用new来实现的,还是需要接口所支持的类的实例来进行实例化(interface A=new BClass()),我们就很顺其自然的找到了实现了IGeoDatasetSchemaEdit接口的类:FeatureDataset 。

这个时候我们先不要急了:因为我们还有件事没办:到目前位置我们虽然很繁琐的创建了一个地理坐标系的空间参考,但是我们还不知道用这个空间参考来改变谁的空间参考呢,所以我们要想办法获取当前地图的信息。

所以我门选择了FeatureDatset 。这就意味着我们可以通过这个类的变量来进行改变空间参考,当然这个变量的任务就是获取要改变空间参考的信息。

我们也许可以通过IGeoDatasetSchemaEdit p=new FeatureDatasetClass();

但是:FeatureDatasetClass没有定义默认的构造函数所以必须IGeoDatasetSchemaEdit类型接口变量的实例化要么通过FeatureDatasetClass类其他接口进行QI来实现;要么通过支持IGeoDatasetSchemaEdit的其他类来进行实例化(实例化它的类必须有构造函数,否则也只能进行QI)!

但是我们还有一个更好的东西:QI!用QI我们不仅可以实例化,还可以转到其他接口,进而得到图层的信息!所以我门又一次自然的看看这个FeatureDatasetClass 支持哪些接口:第一眼就看到了非常熟悉的IDataset 这个接口,虽然它不是我们要找的。。。我们要找的是:IGeoDataset接口。

也就是说,可以通过 IGeoDataset QI到IGeoDatasetSchemaEdit或者说从 IGeoDatasetSchemaEdit QI到  IGeoDataset

这里我们是用第一种,因为要通过 来获得图层的信息。这时我们再看支持 IGeoDataset的类,因为这个时候我们还是希望进行QI,并最终得到地图信息。

二,单向QI了一段,我们再从其他方向QI一段时间:

我们知道我们可以通过IMap pMap=axMapControl1.Map;  来获得当前地图的信息,我们看到IMap接口有个Layer属性:而这个Layer属性通过get_Layer(int index)函数,返回的是ILayer接口类型变量,这里涉及到ILayer接口,我们看下帮助文档:想进行QI,我们首先找到支持ILayer接口的类,然后看这些类中的其他接口,所以我门又一次看了支持ILayer接口的类:从中我们选择了FeatureLayer类,IFeatureLayer也是这个类的接口,所以我们可以实现从 ILayer接口QI到IFeatureLayer,这时我们看到 IFeatureLayer有个属性:FeatureClass,而这个属性返回都是IFeatureClass接口类型,这也就相当于实现了IFeatureLayer到IFeatureClass的转变,也可以“自认为”是QI的一种,因为IFeatureClass也可以QI到别的接口(当一个接口实在QI不了的时候,看看有没有属性来进行间接QI→个人观点)。

进入正题 我们看看支持IFeatureClass的类,我们看都一个熟悉的类FeatureClass,点开看看,我们发现FeatureClass也支持IGeoDataset接口,

就是说是先了上到下的对接,终于通过QI吧信息对接上了。

总的来说:1.进行QI就是不断的接口跳转,跳转可以是同一个类中的俩个接口之间跳转,也可以通过接口的属性来实现接口“跳转”。

2.为什么要进行QI:因为接口的方法是在类中显示实现的,每个类能实现的功能不同,而这些功能又是通过不同的接口来实现的,要完成某项操作(如改变空间参考),就会涉及不同的方法,这些方法在不同的接口中,这些接口只有通过共同的类来实现跳转。

以上是我对照教程+帮助文档+自己理解写的,不是很专业,口语用的比较多,但还是希望对初学者能有一点的帮助吧!

个人观点,转载请注明出处!

转载于:https://www.cnblogs.com/chuang8/archive/2012/11/06/2757781.html

QI实例-改变空间参考相关推荐

  1. 转载:如何区分空间参考、坐标系统、投影、基准面和椭圆体?

    如何区分空间参考.坐标系统.投影.基准面和椭圆体? 作者:巫细波 2007.12.06 空间参考(Spatial Reference)    坐标系统(Coordinate System)    投影 ...

  2. RAC实例 表空间 维护

    先配置一下监听,这样我们就可以从客户端进行连接了. 我这里写了三种连接. 第一种是正常方式,一般都采用这种方式,后面的rac1和rac2 是方便测试.因为如果用第一种方式的话,客户端连哪个实例是随机的 ...

  3. SVG 教程 (七)SVG 实例,SVG 参考手册

    SVG 实例 在线实例 下面的例子是把SVG代码直接嵌入到HTML代码中. 谷歌Chrome,火狐,Internet Explorer9,和Safari都支持. 注意:下面的例子将不会在Opera运行 ...

  4. 投影、坐标系统、基准面和椭圆体、空间参考几个概念的详述

    投影 Projection: 为什么要投影: 我们每天使用的百度地图,贴在墙壁上的中国地图,世界地图都是平面的:但是我们的地球实际是一个椭圆的:这就需要将地球上的每一个点一一对应到平面上:所以需要使用 ...

  5. 空间参考中名词拾遗(坐标系统、空间参考、投影、基准面、椭圆体)

    转载地址:https://www.cnblogs.com/Wizardh/articles/985899.html 坐标系统(Coordinate System) 空间参考(Spatial Refer ...

  6. gis中开始编辑之后显示空间参考_深入浅出空间参考——对ArcGIS空间参考的理解...

    摘要:空间参考描述了一个地物在地球上的真实位置.为了正确的对位置进行描述,需要引入一个可供测量和计算的框架,使得大地测量的结果能够在这个框架上进行描述.而地球是一个不规则形状的椭球体,那么使用什么样的 ...

  7. c#+ArcGIS Engine-获取矢量图层的空间参考

    转自原文c#+ArcGIS Engine-获取矢量图层的空间参考 介绍一种简单的获取矢量图层空间参考的方法:  首先打开Shp文件获得FeatureClass,代码如下: string pPath=& ...

  8. arcgis-“一个或多个已经添加图层的范围与关联空间参考不一致”“Arcmap不能绘制一个或者多个图层”

    arcgis添加图层时,显示"一个或多个已经添加图层的范围与关联空间参考不一致",或者将数据导出shp文件,然后将该shp文件添加至图层时提示"Arcmap不能绘制一个或 ...

  9. 建立空间参考 ISpatialReference

    转自原文建立空间参考 ISpatialReference ISpatialReferenceFactory spatialReferenceFactory = new SpatialReference ...

最新文章

  1. 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx,ibus不能输入中文
  2. 高数第七章知识点框架
  3. MFC中CSliderCtrl的使用(收集)
  4. 要么干,要么滚,千万别混
  5. linux 基础知识学习(六)
  6. SpringCloud学习之Hystrix
  7. python怎么用numpy_Python:一篇文章掌握Numpy的基本用法
  8. 韩顺平php从入门到精通讲义,传智播客_韩顺平_php从入门到精通
  9. 【SAP】实施方法论-ASAP
  10. 宝马和戴姆勒冻结自动驾驶合作项目
  11. LCD屏幕调试 ~ 字模提取工具和图片转码工具
  12. ShadowGun Shader学习
  13. vc 星号密码查看方法
  14. 托管调试助手“LoaderLock”在XXX中检测到故障。其他信息:正尝试在OS加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
  15. 并查集的使用,臭虫同性恋问题
  16. 词袋模型BoW和词集模型SoW比较
  17. 清华水木BBS竟然被关了
  18. html+css+js本地音乐播放器,实现可视化音频频谱
  19. java根据指定的日期获取前七天
  20. Rational Rose画UML状态图

热门文章

  1. wikioi 1017--乘积最大
  2. netflix数据处理2(转)
  3. 新一代网络模式Web 2.0火爆发展
  4. matlab 获取视频图像的信息
  5. 程序逻辑上多一些提示
  6. huffman编码的程序流程图_Huffman编码实现压缩解压缩
  7. vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找
  8. 【APICloud系列|27】 UICalendar模块(日历)的实现
  9. 程序员应该如何提问?
  10. sklearn中eof报错_sklearn中的数据预处理和特征工程