
是的,先得到IFeatureLayer
IFeatureLayer featureLayer = m_mapControlget_Layer(0) as IFeatureLayer;
IFeatureClass featureClass = featureLayerFeatureClass;
int num = featureClassFieldsFieldCount;
List<string> lstName = new List<string>();
for (int i = 0; i < num; i++) {
string name = featureClassFieldsget_Field(i)Name;
lstNameAdd(name);
}
lyr文件 和 mxd 文件类似,相当于一个小的工程文件。是用来存储图层相关信息的,而不存储图层本身的内容,它通过存储图层的绝对路径或相对路径来获取图层。在打开 lyr 文件时,程序通过 绝对路径或相对路径来 寻找图层并加载到 axMapControl 控件中,同时也将上次保存的相关图层信息(如:上次你保存颜色等。如果直接打开 shp 文件 系统会随机生成颜色和其它信息)加载进去。这样会有一个弊端,那就是如果你改变了 图层的 路径,文件打开就会出错。
而出现在MapContral控件中不显示任何内容,但左侧的TocContral中显示图层的名字,但是有叹号的原因是:
在MapContral控件中不显示任何内容,是由于无法找到图层自然无法加载
图层,也就不会显示内容,存储的
图层信息(关于显示图层 或 图层
修饰信息)自然也就无效了。
左侧的TocContral中显示图层的名字,是因为 lyr文件 的确存在,它存储
图层的相关信息(如:图层名称等)
所以,自然会在左侧的 TocContral
中显示图层的名字。
有叹号,是因为无法寻找到 图层 导致 FeatureClass 属性为 空(null)
也就是说图层不存在,接下对图层的任何 *** 作(如:添加了一条
记录 Feature ,或删除 一条记录 等)都会出错!
所以说该状况的出现是由于 路径 问题引起的。你可以在 ArcMap 中,找到
原图层,重新 保存为 lyr文件 即可。
朋友,得到图层的空间参考需要在ILayer和IGeoDataset接口之间进行转换:首先使用ILayer接口得到图层ILayer layer=mapLayer[i]; 然后转换到IGeoDataset接口,访问IGeoDataset接口的SpatialReferenceName属性即可。
以上就是关于ArcEngine我要获取当前shp图层的所有字段名,是不是必须先获取图层要素全部的内容,包括:ArcEngine我要获取当前shp图层的所有字段名,是不是必须先获取图层要素、C#-ArcEngine 添加图层文件的小问题、如何用ArcEngine编程得到当前图层的坐标系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)