Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列出MXD中的所有要素类_C#_Loops_Arcmap_Arcobjects - Fatal编程技术网

C# 列出MXD中的所有要素类

C# 列出MXD中的所有要素类,c#,loops,arcmap,arcobjects,C#,Loops,Arcmap,Arcobjects,我有一个已加载到ArcMap的mxd文件。装载完成后,有几层;其中一些具有多个要素类。最终结果是列出每个要素类的所有文件路径/位置/源,但现在,我只需要知道如何列出所有加载的要素类。当我说列表时,它们实际上可以通过消息框输出到屏幕上。我知道我需要遍历每一层,但使用正确的界面和访问ArcMaps属性是我迷路的地方 在此方面的任何帮助都将不胜感激。我仍然在学习ArcObjects,以及它是如何工作的,并且迫切需要帮助。提前感谢。这将是C#中的一个示例,用于循环所有层,如果是要素层,则在工作区之前获取

我有一个已加载到ArcMap的mxd文件。装载完成后,有几层;其中一些具有多个要素类。最终结果是列出每个要素类的所有文件路径/位置/源,但现在,我只需要知道如何列出所有加载的要素类。当我说列表时,它们实际上可以通过消息框输出到屏幕上。我知道我需要遍历每一层,但使用正确的界面和访问ArcMaps属性是我迷路的地方


在此方面的任何帮助都将不胜感激。我仍然在学习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);
}
}
}
单个图层仅从单个要素类提取数据;一组图层可以有多个图层(和多个要素类)。如果这看起来很挑剔,我很抱歉,但术语很重要:)