转载的原文 AE中如何由IFeature 如何获取所对应的FeatureClass

 
先获取FeatureClass,然后遍历Map中所有的FeatureLayer,然后比较
FeatureClass与FeatureLayer所对应的FeatureClass。
 
下面的例子中是在编辑功能里,删除一个Feature后,所触发的事件。目的是找到该Feature所在的FullPathName,并且输出该对象的坐标和ID号。
 
private void OnDeleteFeatureMethod(object o)
{
  IFeature pFeature = o as IFeature;
  IFeatureClass pFeatureClass = pFeature.Class as IFeatureClass;
  for (int i = 0; i < axMapControl1.Map.LayerCount;i++ )
  {
IFeatureLayer iFeatureLayer = axMapControl1.get_Layer(i) as IFeatureLayer;
IFeatureClass iFeatureCla = iFeatureLayer.FeatureClass; if (iFeatureCla == pFeatureClass)
{
IWorkspace pWorkSpace = m_EngineEditor.EditWorkspace;
textBox3.Text += "操作的文件全路径:" + pWorkSpace.PathName + "\\" + axMapControl1.get_Layer(i).Name + ".shp " + "\r\n";
break;
}
} if (pFeature.Shape.GeometryType == esriGeometryType.esriGeometryPoint)
{
IGeometry iGe = pFeature.Shape;
IPoint ipo = new PointClass();
ipo = iGe as IPoint;
int a = 0;
int b = 0;
axMapControl1.FromMapPoint(ipo, ref a, ref b);
textBox3.Text += "删除的点的ID号:" + pFeature.OID + ",坐标:(" + a + "," + b + ")" + "\r\n";
}
else if (pFeature.Shape.GeometryType == esriGeometryType.esriGeometryPolygon)
{
textBox3.Text += "删除的多边形对象的ID号:" + pFeature.OID + ",坐标:";
IPolygon pPolygon = (IPolygon)pFeature.Shape;
int a = 0;
int b = 0;
//把该feature强制转换为一个点的集合,再取点的坐标
IPointCollection pPointCollection = pPolygon as IPointCollection;
for (int i = 0; i < pPointCollection.PointCount - 1; i++)
{
IPoint ipo = pPointCollection.get_Point(i);
axMapControl1.FromMapPoint(ipo, ref a, ref b);
textBox3.Text += "(" + a + "," + b + ")" + "\t";
}
textBox3.Text += "\r\n";
} else if (pFeature.Shape.GeometryType == esriGeometryType.esriGeometryPolyline)
{
textBox3.Text += "删除的线对象的ID号:" + pFeature.OID + ",其坐标:";
IPolyline pPolygon = (IPolyline)pFeature.Shape;
int a = 0;
int b = 0;
//把该feature强制转换为一个点的集合,再取点的坐标
IPointCollection pPointCollection = pPolygon as IPointCollection;
for (int i = 0; i < pPointCollection.PointCount; i++)
{
IPoint ipo = pPointCollection.get_Point(i);
axMapControl1.FromMapPoint(ipo, ref a, ref b);
textBox3.Text += "(" + a + "," + b + ")" + "\t";
}
textBox3.Text += "\r\n";
  }
  axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
}

[转] AE中如何由IFeature 如何获取所对应的FeatureClass的更多相关文章

  1. AE中Shapefile文件添加到SDE数据集

    linder_lee 原文 AE中Shapefile文件添加到SDE数据集(c#) 主要完成用C#,通过AE将本地Shapefile文件导入到SDE的指定数据集下面. 首先说下思路: (1) 通过Op ...

  2. AE中Identify查询工具的实现

    原文 AE中Identify查询工具的实现 主要实现点击查询并闪烁显示,并把查询要素的信息通过DataGridView显示出来,主要用到的接口: IIdentity.IArray.IIdentifyO ...

  3. AE中地图查询方式

    樱木 原文 AE中地图查询方式 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1  Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者 ...

  4. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

    PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...

  5. git拉取远程分支并创建本地分支和Git中从远程的分支获取最新的版本到本地

    git拉取远程分支并创建本地分支 一.查看远程分支 使用如下Git命令查看所有远程分支: git branch -r 二.拉取远程分支并创建本地分支 方法一 使用如下命令: git checkout ...

  6. Git中从远程的分支获取最新的版本到本地

    Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge    git fetch origin mastergit l ...

  7. jQuery遍历table中的tr td并获取td中的值

    jQuery遍历table中的tr td并获取td中的值 $(function(){ $("#tableId tr").find("td").each(func ...

  8. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  9. springboot中使用ContextLoaderListener.getCurrentWebApplicationContext();获取WebApplicationContext为空问题

    WebApplicationContext applicationContext = ContextLoaderListener.getCurrentWebApplicationContext(); ...

随机推荐

  1. SPOJ CNTPRIME 13015 Counting Primes (水题,区间更新,求区间的素数个数)

    题目连接:http://www.spoj.com/problems/CNTPRIME/ #include <iostream> #include <stdio.h> #incl ...

  2. C Primer Plus之高级数据表示

     抽象数据类型(ADT)    类型是由什么组成?一个类型(type)指定两类信息:一个属性集和一个操作集. 所以您想定义一个新的数据类型.首先,您需要提供存储数据的方式,可能是通过设计一个结构.第二 ...

  3. ubuntu 13.10 64bit装BeyondCompare

    1. Beyond Compare官网下载amd-64位的,安装失败,依赖于ia32-libs,但是这个文件已经不在源里了: 2. 官网下载tar.gz源码包,解压安装失败: 3. 直接装32位的,可 ...

  4. linux 线程的内核栈是独立的还是共享父进程的?

    需要考证 考证结果: 其内核栈是独立的 206 static struct task_struct *dup_task_struct(struct task_struct *orig) 207 { 2 ...

  5. python 编码问题(二)

    >>> a = '中文' >>> chardet.detect(a) {'confidence': 0.7525, 'encoding': 'utf-8'} > ...

  6. java:抽象类和抽象函数

    面向对象:先抽象后具体 抽象类也叫基类 抽象函数:只有函数的定义,没有函数体的函数, 语法:类必须定义为抽象类,才能调用抽象函数,抽象类里面可以没有抽象函数 abstract class Printe ...

  7. JDK,JRE,JVM区别与联系

    JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工 ...

  8. PHP开发经验总结

    1.使用内嵌的HTML代码,而不是PHP的echo语句. 因为PHP是一门嵌入式Web编程语言,可以将HTML代码和PHP代码相互嵌入.但是很多程序员担心在HTML代码中过多的使用”"嵌入P ...

  9. 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(老罗学习笔记2)

    在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序.在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文 ...

  10. eclipse导入javax.servlet.*的方法

    1.下载web应用服务器tomact,网址http://tomcat.apache.org/download-80.cgi 这个根据自己系统进行选择. 2.将其加压到电脑中 3.在eclipse中添加 ...