Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
        }