[转] 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 " + "\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); }
你们的评论、反馈,及对你们有所用,是我整理材料和博文写作的最大的鼓励和唯一动力。欢迎讨论和关注!
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。