/// <summary> /// 获取ArcGISServer服务图层 /// </summary> /// <param name="serverUrl"></param>服务器地址 /// <param name="mapservername"></param>地图服务名称 /// <param name="isLan"></param>地图服务是局域网内还是互联网上的 /// <returns></returns> public ILayer GetARGServerLyr(String serverUrl, String mapservername, bool isLan) { ILayer lyr = null; //获得服务对象名称 try { IAGSServerObjectName pServerObjectName = GetAGSMapServer(serverUrl, mapservername, isLan);//获取地图 IName pName = (IName)pServerObjectName; //访问地图服务 IAGSServerObject pServerObject = (IAGSServerObject)pName.Open(); IMapServer pMapServer = (IMapServer)pServerObject; mapserver = pMapServer;//获取地图服务对象 IMapServerLayer pMapServerLayer = new MapServerLayer() as IMapServerLayer; //连接地图服务 pMapServerLayer.ServerConnect(pServerObjectName, pMapServer.DefaultMapName); //添加数据图层 lyr = pMapServerLayer as ILayer; } catch (Exception ex) { MessageBox.Show("服务器配置信息错误,请到“系统管理-系统配置”设置", "连接失败"); } return(lyr); }
/// <summary> /// 获取ArcGIS Server发布的地图服务图层 /// </summary> /// <param name="serviceUrl">服务地址,例:http://services.arcgisonline.com/ArcGIS/services </param> /// <param name="serviceName">服务名称,例:ESRI_Imagery_World_2D</param> /// <param name="isLAN">是否局域网(Local Area Network)</param> /// <returns></returns> public ILayer GetServerLayer(string serviceUrl, string serviceName, bool isLAN = false) { IAGSServerObjectName serverObjectName = GetServerObjectName(serviceUrl, serviceName, isLAN); IName iName = (IName)serverObjectName; IAGSServerObject serverObject = (IAGSServerObject)iName.Open(); IMapServer mapServer = (IMapServer)serverObject; IMapServerLayer mapServerLayer = new MapServerLayerClass(); //连接地图服务,第一个参数为地图服务名称,第二个参数为数据框架名称(the name of a data frame) mapServerLayer.ServerConnect(serverObjectName, mapServer.DefaultMapName); return((ILayer)mapServerLayer); }
/// <summary> /// Adds ArcGIS layer to map /// </summary> /// <param name="ipMxDoc"></param> /// <param name="strServer"></param> /// <param name="strLayerName"></param> /// <param name="strSecretName"></param> /// <returns></returns> private bool addLayerAGS(IMxDocument ipMxDoc, string strServer, string strLayerName, string strSecretName) { IPropertySet2 pProps = null; string pServerUrl; string strServerObj; pServerUrl = GetAGSServiceUrl(strServer); // connect to the GIS server IAGSServerConnectionFactory pAGSServerConnectionFactory = new AGSServerConnectionFactory(); pProps = (IPropertySet2) new PropertySet(); pProps.SetProperty("URL", pServerUrl); IAGSServerConnection pAGSConnection = pAGSServerConnectionFactory.Open(pProps, 0); //get server objectname from url strServerObj = GetServerObjectName(strServer); // enumerate over server objects IAGSEnumServerObjectName pAGSSObjs = pAGSConnection.ServerObjectNames; IAGSServerObjectName pAGSSObj = pAGSSObjs.Next(); while (pAGSSObj != null) { if (pAGSSObj.Type == "MapServer" && pAGSSObj.Name == strServerObj) { break; } pAGSSObj = pAGSSObjs.Next(); } IName pName = (IName)pAGSSObj; IAGSServerObject pAGSO = (IAGSServerObject)pName.Open(); IMapServer mapServer = (IMapServer)pAGSO; IPropertySet prop = new PropertySetClass(); prop.SetProperty("URL", pServerUrl); prop.SetProperty("Name", pAGSSObj.Name); //Create new layer IMapServerLayer pMSLayer = (IMapServerLayer) new MapServerLayer(); pMSLayer.ServerConnect(pAGSSObj, mapServer.DefaultMapName); if (!isMapServerAdded(strServer)) { setAGSLayerVisiblity((MapServerLayer)pMSLayer, strSecretName); IMap ipMap = ipMxDoc.FocusMap; ipMap.AddLayer((ILayer)pMSLayer); logger.writeLog(StringResources.AddAGSLayer + strSecretName); } else { // set visibility setAGSLayerVisiblity((MapServerLayer)pMSLayer, strSecretName); } //add to the service list string strItem = EncodeServiceList(strServer, strLayerName, strSecretName); // m_pLogger.Msg "adding to service list : " & strItem colServiceList.Add(strItem); //set flag logger.writeLog("strServer = " + strServer + " strServer & strLayerName = " + strServer + strLayerName); return(true); }