QI实例-改变空间参考

 

学习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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#省市二级联动(王者荣耀挑选英雄为例)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace beyond_联动_ {public partial clas…

二叉排序树(Binary Sort Tree) 又称为二叉查找树(Binary Search Tree) - (代码、分析)

目录:代码:分析:代码: BSTree.h #ifndef _BSTREE_H_ #define _BSTREE_H_typedef void BSTree;//定义二叉树类型 typedef void BSKey;//定义节点的键值类型(用于节点排序)typedef struct _tag_BSTreeNode …

springboot tomcat默认线程数_记一次JAVA线程池的错误用法

最近项目一个项目要结项了,但客户要求 TPS 能达到上千,而用我写的代码再怎么弄成只能达到 30 的 TPS,然后我又将代码中能缓存的都缓存了,能拆分的也都拆分了,拆分时用的线程池来实现的;其实现的代码主要为…

引以为鉴-ARM开发板连线注意事项

前些日子把实验室的三台机子放到一个工位上,非常拥挤,做实验也很不方便。因此,想把ARM开发板的环境重新搭建到自己的电脑上。说完就做,上午就开始忙活起来。把开发板上的USB线、串口线、JTAT接口、还有电源线一一插好。接着就开始…

Python---实验八

1,现在有一份‘邀请函.txt’的空白文件,请在同级目录下编写一段代码,写入内容‘诚挚邀请您来参加本次宴会’。 with open(fG:\study\Python\邀请函.txt,modew,encodingutf-8) as y:y.write(诚挚邀请您来参加本次宴会)效果图如下:…

哈希表 - (代码、分析 )

目录:代码:分析:代码: BSTree.h BSTree.c 二叉排序树(Binary Sort Tree) 又称为二叉查找树(Binary Search Tree) Hash.h #ifndef _HASH_H_ #define _HASH_H_typedef void Hash;//定义哈希表类型 typedef void HashKey;//定义哈…

scala spark 数据对比_IT大牛耗时三个月总结出大数据领域学习路线,网友评论:炸锅了...

大数据不是某个专业或一门编程语言,实际上它是一系列技术的组合运用。有人通过下方的等式给出了大数据的定义。大数据 编程技巧 数据结构和算法 分析能力 数据库技能 数学 机器学习 NLP OS 密码学 并行编程虽然这个等式看起来很长,需要学习的东…

Python---实验九作业

1,使用tkinter实现计算器程序。实现效果如下: from tkinter import * from tkinter.ttk import *def frame(master):"""将共同的属性作为默认值, 以简化Frame创建过程"""w Frame(master)w.pack(sideTOP, expandYES, fill…

用pv操作描述如下前驱图_LinkedList实现分析(二)——常用操作

上一篇文章LinkedList实现分析(一)——LinkedList初探与对象创建介绍了LinkedList中的一些重要属性和构造方法,下面我们将详细介绍一下LinkedList提高的常用方法的实现原理元素添加###add(E e)方法往LinkedList添加元素,LinkedList提供了多重方式&#x…

C++多重继承与虚基类及与.NET的比较

多重继承前面我们介绍的派生类只有一个基类,称为单基派生或单一继承。在实际运用中,我们经常需要派生类同时具有多个基类,这种方法称为多基派生或多重继承。2.1 多重继承的声明:在 C 中,声明具有两个以上基类的派生类与…

平院实训门禁系统导入

这是我的配置(如果是Win10最好每一步都管理员身份运行) win7 SQLServer2008 VS2012 切记:注意:当你SQLserver创建数据库和VS连接数据库的时候得用同一种方式,要么都用window(主机名)&#xff0…

北京中信银行总行地址_中信银行拉萨分行举行“存款保险标识”启用和存款保险条例宣传活动...

11月NOV中信银行拉萨分行举行“存款保险标识”启用和《存款保险条例》宣传活动揭牌启用仪式111月Jul根据人民银行和总行关于“存款保险标识”启用工作相关要求,分行行领导高度重视“存款保险标识”启用和《存款保险条例》宣传活动工作,按照统一工作部署、…

转整型_156.Ruby烘焙大理石豆沙吐司解锁大理石花纹整型

好看又好吃的大理石豆沙面包。红豆馅均匀分布在松软细腻的面包体里,手撕着吃,一层层的甜美与温柔~关于吐司面包,我公众号里写过白吐司(基础款牛奶吐司,超绵鲜奶油吐司)和全麦吐司(基础款50%全麦吐司,经典燕…

VS2010 快捷键 (空格显示 绿点, Tab 显示箭头)

VS2010 有用的快捷键 : Ctrl r, ctrl w, 切换空格示。 转载于:https://www.cnblogs.com/fengye87626/archive/2012/11/21/2780716.html

分析一下mp4格式的trak -> mdia -> minf -> stbl -> stts、stsc 这两个box信息

分析一下mp4格式的trak -> mdia -> minf -> stbl -> stts、stsc 这两个box信息 (因为这两个box在音频trak和视频trak 下都有的,而且都有一个数组的值是比较绕的) 目录:stts:记录时间戳的,每个s…

Python---爬虫案例

例1、爬取公众号文章中的图片。 1,首先打开要获取公众号文章的地址 2,按下F12,再按Ctrl Shift C,然后鼠标移动到图片位置,然后观察控制台中显示图片对应的代码位置 3,分析该位置的代码段 代码段如下&…

Python---实验九

1、使用标准库urllib爬取“http://news.pdsu.edu.cn/info/1005/31269.htm”平顶山学院新闻网上的图片,要求:保存到F盘pic目录中,文件名称命名规则为“本人姓名” “_图片编号”,如姓名为张三的第一张图片命名为“张三_1.jpg”。 from re imp…

32接上拉5v_51单片机P0口上拉电阻的选择

作为I/O口输出的时候时,输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0 口不能真正的输出高电平)。给所接的负载提供电流,因此必须接(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。P…

[转载]FPGA/CPLD重要设计思想及工程应用(时序及同步设计)

来源:http://www.eetop.cn/blog/html/11/317611-13412.html 数字电路中,时钟是整个电路最重要、最特殊的信号。 第一, 系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错. 第二, 时钟信号通常是系统…

实验五 图形设计

每复制一个方法都要绑定Paint事件 一、创建Windows窗体应用程序,要求如下:(源代码运行界面,缺少任一项为0分,源代码只需粘贴绘制图形代码所在的方法,不用粘贴太多) 例如: (1&…