码迷,mamicode.com
首页 > 其他好文 > 详细

arcgis engine 调用arcgis server服务

时间:2015-03-16 09:47:53      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

首先需要添加两个引用:

using ESRI.ArcGIS.GISClient;
using ESRI.ArcGIS.DataSourcesRaster;

 

        /// <summary>
        /// arcgis engine 调用arcgis server服务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 符号是否随比例尺变化ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //获得服务对象名称

            IAGSServerObjectName pServerObjectName = GetMapServer("http://services.arcgisonline.com/ArcGIS/services", "ESRI_Imagery_World_2D", false);
            IName pName = (IName)pServerObjectName;
            //访问地图服务
            IAGSServerObject pServerObject = (IAGSServerObject)pName.Open();
            IMapServer pMapServer = (IMapServer)pServerObject;

            ESRI.ArcGIS.Carto.IMapServerLayer pMapServerLayer = new ESRI.ArcGIS.Carto.MapServerLayerClass();
            //连接地图服务

            pMapServerLayer.ServerConnect(pServerObjectName, pMapServer.DefaultMapName);
            //添加数据图层

            axMapControl1.AddLayer(pMapServerLayer as ILayer);

            axMapControl1.Refresh();
        }
        /// <summary>
        /// 获得地图服务的方法,返回IAGSServerObjectName
        /// </summary>
        /// <param name="pHostOrUrl"></param>
        /// <param name="pServiceName"></param>
        /// <param name="pIsLAN"></param>
        /// <returns></returns>
        public IAGSServerObjectName GetMapServer(string pHostOrUrl, string pServiceName, bool pIsLAN)
        {


            //设置连接属性
            IPropertySet pPropertySet = new PropertySetClass();
            if (pIsLAN)
                pPropertySet.SetProperty("machine", pHostOrUrl);
            else
                pPropertySet.SetProperty("url", pHostOrUrl);

            //打开连接

            IAGSServerConnectionFactory pFactory = new AGSServerConnectionFactory();
            //Type factoryType = Type.GetTypeFromProgID(
            //    "esriGISClient.AGSServerConnectionFactory");
            //IAGSServerConnectionFactory agsFactory = (IAGSServerConnectionFactory)
            //    Activator.CreateInstance(factoryType);
            IAGSServerConnection pConnection = pFactory.Open(pPropertySet, 0);

            //Get the image server.
            IAGSEnumServerObjectName pServerObjectNames = pConnection.ServerObjectNames;
            pServerObjectNames.Reset();
            IAGSServerObjectName ServerObjectName = pServerObjectNames.Next();
            while (ServerObjectName != null)
            {
                if ((ServerObjectName.Name.ToLower() == pServiceName.ToLower()) &&
                    (ServerObjectName.Type == "MapServer"))
                {

                    break;
                }
                ServerObjectName = pServerObjectNames.Next();
            }

            //返回对象
            return ServerObjectName;
        }

  

arcgis engine 调用arcgis server服务

标签:

原文地址:http://www.cnblogs.com/xianerwonder/p/4341038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!