zoukankan      html  css  js  c++  java
  • C#中winform下利用ArcEngine调用ArcGIS Server发布的服务

    来自:http://blog.sina.com.cn/s/blog_5d25ac4e0100yncl.html

    主要使用了AE中的IAGSServerOject接口及IMapServer接口。
    Private void GetServerTest_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();
            }

     

     

     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;
            }
    VS2008+AE9.3下编译通过

  • 相关阅读:
    Java函数式接口与逐步lambda简化
    Java继承知识点总结(基础知识3)
    Java静态工厂方法新建对象
    Java对象与类知识点总结(基础知识2)
    Java多线程并发入门(基础知识)
    Java基本程序设计结构(基础知识1)
    【数据库】JDBC课设(5)将图片以二进制流方法添加进MySQL并查询
    【数据库】JDBC课设(4) DatabaseMetaData 获得数据库信息
    【数据库】JDBC课设(3)TYPE_SCROLL_INSENSITIVE使结果集可以前后滚动
    简单总结.net下几种序列化
  • 原文地址:https://www.cnblogs.com/gisoracle/p/2358809.html
Copyright © 2011-2022 走看看