实际上,上述的操大多数都是常规的操作,AE程序员都能轻松搞定。但细微的地方还是要注意的,例如Server环境下创建新对象,文件的权限设置等等
对server的一些特性也必须了解。例如mxd更新以后必须重启服务,确保当前服务与地图文档一致,不然就可能导致灾难性的出错。
前面漏掉的一个函数现在补上
/// <summary>
/// 通过图层名称返回图层
/// </summary>
/// <param name="pSOC">地图控件</param>
/// <param name="LayerName">图层名称</param>
/// <returns></returns>
public static ILayer getLayerByName(IServerContext pSOC, string LayerName)
{
IMapServer pMapServer = pSOC.ServerObject as IMapServer;
IMapServerObjects pMapServerObjs = pMapServer as IMapServerObjects;
IMap pMap = pMapServerObjs.get_Map(pMapServer.DefaultMapName);
//获取所有的图层
for (int i = 0; i < pMap.LayerCount; i++)
{
ILayer lyr = pMap.get_Layer(i);
if (lyr.Name == LayerName)
{
return lyr;
}
else if (lyr is ICompositeLayer)
{
//图层为复合图层,查找其子图层
ICompositeLayer comLayer = lyr as ICompositeLayer;
for (int j = 0; j < comLayer.Count; j++)
{
ILayer cLayer = comLayer.get_Layer(j);
if (cLayer.Name == layerName)
return cLayer;
}
}
}
return null;
}