zoukankan      html  css  js  c++  java
  • [转] AE中如何由IFeature 如何获取所对应的FeatureClass

    转载的原文 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 " + "
    ";
                        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 + ")" + "
    ";
             }
             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 + ")" + "	";
                 }
                 textBox3.Text += "
    ";
             }
     
             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 + ")" + "	";
                 }
                 textBox3.Text += "
    ";
      }
      axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
    }
    
  • 相关阅读:
    Mac os下安装pycurl
    Mac os 10.9下面配置JAVA_HOME
    同步,异步,阻塞,非阻塞
    Python处理XML
    Apriori算法在购物篮分析中的运用
    Python抓取双色球数据
    为什么这么多Python框架
    Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
    ubuntu 开机自动挂载分区
    VIM 配置随手记
  • 原文地址:https://www.cnblogs.com/arxive/p/5903577.html
Copyright © 2011-2022 走看看