C# 列出MXD中的所有要素类
我有一个已加载到ArcMap的mxd文件。装载完成后,有几层;其中一些具有多个要素类。最终结果是列出每个要素类的所有文件路径/位置/源,但现在,我只需要知道如何列出所有加载的要素类。当我说列表时,它们实际上可以通过消息框输出到屏幕上。我知道我需要遍历每一层,但使用正确的界面和访问ArcMaps属性是我迷路的地方C# 列出MXD中的所有要素类,c#,loops,arcmap,arcobjects,C#,Loops,Arcmap,Arcobjects,我有一个已加载到ArcMap的mxd文件。装载完成后,有几层;其中一些具有多个要素类。最终结果是列出每个要素类的所有文件路径/位置/源,但现在,我只需要知道如何列出所有加载的要素类。当我说列表时,它们实际上可以通过消息框输出到屏幕上。我知道我需要遍历每一层,但使用正确的界面和访问ArcMaps属性是我迷路的地方 在此方面的任何帮助都将不胜感激。我仍然在学习ArcObjects,以及它是如何工作的,并且迫切需要帮助。提前感谢。这将是C#中的一个示例,用于循环所有层,如果是要素层,则在工作区之前获取
在此方面的任何帮助都将不胜感激。我仍然在学习ArcObjects,以及它是如何工作的,并且迫切需要帮助。提前感谢。这将是C#中的一个示例,用于循环所有层,如果是要素层,则在工作区之前获取路径或从中获取任何内容:
/*列出所有要素类*/
列表层\列表=新列表();
IMap map=get_map();
IEnumLayer enumLayer=map.get_Layers(null,true);
ILayer layer=null;
while(layer=enumLayer.Next()!=null){
//我们只寻找要素类
如果(图层为IFeatureLayer){
试一试{
IFeatureClass fclass=((IFeatureLayer)层).FeatureClass;
IFeatureLayer featureLayer=(IFeatureLayer)图层;
//获取要素类的数据集和工作空间
IDataset ds=(IDataset)fclass;
IWorkspace ws=(IWorkspace)ds.Workspace;
//对工作区执行一些操作,例如获取路径或
//不管怎样。。。
}捕获(例外e){
MessageBox.Show(“Layer'”+Layer.Name+”:\n\n“+e.Message);
}
}
}
单个图层仅从单个要素类提取数据;一组图层可以有多个图层(和多个要素类)。如果这看起来很挑剔,我很抱歉,但术语很重要:)