转载的原文 AE中如何由IFeature 如何获取所对应的FeatureClass
先获取FeatureClass,然后遍历Map中所有的FeatureLayer,然后比较
FeatureClass与FeatureLayer所对应的FeatureClass。
下面的例子中是在编辑功能里,删除一个Feature后,所触发的事件。目的是找到该Feature所在的FullPathName,并且输出该对象的坐标和ID号。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
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
);
}
|
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5903577.html,如需转载请自行联系原作者