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);
    }
    
  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/arxive/p/5903577.html
Copyright © 2011-2022 走看看