使用以下代码获取mxd中图层的工作空间workspace,
IMapDocument mapDoc;
IMap map;
mapDoc = new MapDocumentClass();
mapDoc.Open(@"D:\GISDATA\mxd\fortest.mxd");
//外循环为map
for (int mapIndex = 0; mapIndex < mapDoc.MapCount; mapIndex++)
{
map = mapDoc.get_Map(mapIndex);
//内循环为layer
for (int layerIndex = 0; layerIndex < map.LayerCount; layerIndex++)
{
ILayer lyr = map.get_Layer(layerIndex);
IDataset oldDS = lyr as IDataset;
Console.WriteLine(oldDS.Workspace.PathName);
}
}
IMapDocument mapDoc;
IMap map;
mapDoc = new MapDocumentClass();
mapDoc.Open(@"D:\GISDATA\mxd\fortest.mxd");
//外循环为map
for (int mapIndex = 0; mapIndex < mapDoc.MapCount; mapIndex++)
{
map = mapDoc.get_Map(mapIndex);
//内循环为layer
for (int layerIndex = 0; layerIndex < map.LayerCount; layerIndex++)
{
ILayer lyr = map.get_Layer(layerIndex);
IDataset oldDS = lyr as IDataset;
Console.WriteLine(oldDS.Workspace.PathName);
}
}
需要将mxd设置为相对路径存储,否则会提示comexception。
PostScript:如果mxd所关联的数据源不存在,则获取workspace的时候也会出现错误。