• [转] 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);
    }
    
  • 相关阅读:
    CA认证
    浅谈个人融资秘诀
    外挂编写完全攻略
    字符串之单词原地逆转
    推荐系统(1)--splitting approaches for context-aware recommendation
    BZOJ 1122 POI2008 账本BBB 单调队列
    一起talk C栗子吧(第一百二十一回:C语言实例--线程知识体系图)
    几种内存数据的总结
    Android学习路线(十九)支持不同设备——支持不同(Android)平台版本号
    毕业课题之------------图像的形态学滤波
  • 原文地址:https://www.cnblogs.com/arxive/p/5903577.html
Copyright © 2020-2023  润新知