ArcEngine在地图上加载Server图层数据

简介: 版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/22183775         加载Server图层数据需要指定两个参数,第一是服务的Url地址,第二是服务中的数据对象名称Name。
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/22183775

        加载Server图层数据需要指定两个参数,第一是服务的Url地址,第二是服务中的数据对象名称Name。也就是说,一个Url服务中包含了若干个数据对象,我们加载时可以通过名称加载的数据对象,当然也可以遍历将其全部加上。


例:加载服务地址"http://services.arcgisonline.com/ArcGIS/services"中的"ESRI_Imagery_World_2D"数据对象(图层)到地图上。

示例代码:

private void GetServerTest()
        {
            //获得服务对象名称
            IAGSServerObjectName serverObjectName =GetMapServer(
                "http://services.arcgisonline.com/ArcGIS/services", "ESRI_Imagery_World_2D", false);
            IName pName = (IName)serverObjectName;
            //访问地图服务
            IAGSServerObject serverObject = (IAGSServerObject)pName.Open();
            IMapServer mapServer = (IMapServer)serverObject;

            IMapServerLayer mapServerLayer = new MapServerLayer() as IMapServerLayer;
            
            //连接地图服务
            mapServerLayer.ServerConnect(serverObjectName, mapServer.DefaultMapName);
            
            //添加数据图层
            _application.MapControl.AddLayer(mapServerLayer as ILayer);
            _application.MapControl.Refresh();
        } 

        public IAGSServerObjectName GetMapServer(string pHostOrUrl, string pServiceName, bool pIsLAN)
        {        
            //设置连接属性
            IPropertySet propertySet = new PropertySetClass();
            if (pIsLAN)
                propertySet.SetProperty("machine", pHostOrUrl);
            else
                propertySet.SetProperty("url", pHostOrUrl);

            //打开连接
            IAGSServerConnectionFactory factory = new AGSServerConnectionFactory();            
            IAGSServerConnection pConnection = factory.Open(propertySet, 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;
        }

下面附上一张效果图:


相关文章
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
2403 4
|
Unix 编译器 开发者
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
1466 0
|
Java 应用服务中间件 Android开发
IDEA 编译时 报 “常量字符串过长” 解决办法
IDEA 编译时 报 “常量字符串过长” 解决办法
3788 0
|
存储 缓存 JavaScript
NPM怎样清空缓存
NPM怎样清空缓存
|
存储 Java
如何在 Java 中写入和读取 ByteBuffer
【8月更文挑战第22天】
483 0
|
监控 数据可视化 安全
软件生命周期是什么?包括哪些阶段?各阶段的目标和任务是什么?
在数字化时代,软件如同空气般无处不在,其生命周期涵盖从需求分析到退役的多个阶段,如同生物的成长过程。本文详细介绍了软件生命周期各阶段的目标与任务,并探讨了瀑布模型、迭代模型和敏捷模型等常见生命周期模型。未来,随着技术和业务的不断演变,软件生命周期管理将面临更多挑战与机遇,需不断学习先进方法和技术,以满足用户需求。
6599 0
|
监控 网络协议 关系型数据库
如何在Linux中查看正在运行的进程以及过滤特定端口和进程名称
如何在Linux中查看正在运行的进程以及过滤特定端口和进程名称
1068 0
|
Java Spring
快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持
这是一个简单的配置示例,用于在Spring Boot应用程序中实现CORS支持。根据你的项目需求,你可能需要更详细的配置来限制允许的来源、方法和标头。
1413 3
QtCreater增加自动添加注释的快捷代码
QtCreater增加自动添加注释的快捷代码
815 0