ArcGIS Runtime for .Net Quartz开发探秘(三):承接来自GIS服务器的服务

简介: 在上一篇博客中,我们已经在程序中添加了两个服务,一个是切片地图服务,另一个是三维场景服务。 这篇博客则会从整体上介绍几种常用服务的使用方式。 先解释两个名词:服务、图层 服务:服务器对外提供功能的单元 图层:应用程序组织要素的单元 服务和图层,表现在程序中是这样的: 其中http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer是服务,ArcGISTiledLayer是图层。

在上一篇博客中,我们已经在程序中添加了两个服务,一个是切片地图服务,另一个是三维场景服务。

这篇博客则会从整体上介绍几种常用服务的使用方式。

先解释两个名词:服务、图层

服务:服务器对外提供功能的单元

图层:应用程序组织要素的单元

服务和图层,表现在程序中是这样的:

<esri:ArcGISSceneLayer Name="BuildingsLayer" Source="http://scene.arcgis.com/arcgis/rest/services/Hosted/Buildings_Brest/SceneServer/layers/0"/>

其中 http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer是服务,ArcGISTiledLayer是图层。

动态地图服务&切片地图服务

动态地图服务:用户浏览地图的时候由Server临时绘制地图的一种服务。

切片地图服务:与动态地图服务不同,切片是事先绘制好缓存起来的,而动态地图服务则是在调用时,读取地图数据后临时绘制的。

MapService:在ArcGIS Server的服务中,一个MapService地图服务可能同时包含上面两种服务的服务能力(动态地图服务和切片地图服务)。通过各种终端发布至ArcGIS Server的MapService,默认会开启动态地图服务能力,但是不一定有切片地图服务能力。作为移动端开发人员,拿到的URL在结构上是看不出是否具有切片地图服务能力的,只能通过在浏览器上输入URL,在服务详情中产看。如下图,有Tile Info的MapService才有切片地图服务能力。


既然地图服务的URL一样,那怎么去区别使用呢?

使用MapService的哪种能力,要通过API去控制,要看程序用什么图层对象去承接MapService。

如果我用ArcGISMapImageLayer对象去承接,则使用的是动态地图服务的能力,如果使用的是ArcGISTiledLayer对象去承接,则使用的是切片地图服务的能力。

下面给出动态地图服务加载的代码和切片地图服务加载的代码。

<esri:Scene.OperationalLayers>
      <esri:ArcGISMapImageLayer Source="http://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_by_Sex/MapServer"></esri:ArcGISMapImageLayer>
      <esri:ArcGISTiledLayer Source="http://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_by_Sex/MapServer"></esri:ArcGISTiledLayer>
      <esri:ArcGISSceneLayer Name="BuildingsLayer"
           Source="http://scene.arcgis.com/arcgis/rest/services/Hosted/Buildings_Brest/SceneServer/layers/0"/>
</esri:Scene.OperationalLayers>

一个服务同时有动态地图服务能力和切片服务能力的MapService,使用ArcGISMapImageLayer和使用ArcGISTiledLayer加载的最终效果一样,但是加载时间长短区别很大。切片地图服务是提前把每个比例尺下的地图切割成小块图片,保存在服务器上。这样客户端在访问地图时,直接获取需要的小块图片拼接成整幅地图,而不是由服务器动态创建出一幅图片再送到客户端,极大程度提高了访问速度。

要素服务

要素服务一般被用作要素在线编辑。服务的URL与MapServer的URL略有不同。示例URL:

http://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/FeatureServer

要素服务的末尾不是MapServer,而是FeatureServer,并且在要素服务使用的过程中,往往是使用FeatureServer的具体图层。下面的代码展示了如何在地图中加载要素服务,至于要素服务怎么编辑,放到后面的内容中去探索。

Uri serviceUri = new Uri( "http://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/FeatureServer/0");
ServiceFeatureTable myFeatureTable =new ServiceFeatureTable(serviceUri);
myFeatureTable.FeatureRequestMode= FeatureRequestMode.OnInteractionNoCache;
FeatureLayer myFeatureLayer =newFeatureLayer(myFeatureTable);
myMap.OperationalLayers.Add(myFeatureLayer);


影像服务

影像服务这里不做过多介绍,这里给出一个影像服务的示例URL,并给出服务加载代码。

http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer

ImageServiceRaster serviceRaster = new ImageServiceRaster(new Uri("http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer"));
serviceRaster.Loaded += (s, e) =>
{
    ArcGISImageServiceInfo serviceInfo = serviceRaster.ServiceInfo;
    IReadOnlyList<RenderingRuleInfo> renderingRuleInfos = serviceInfo.RenderingRuleInfos;
    RenderingRule renderingRule = new RenderingRule(renderingRuleInfos[3]);
    serviceRaster.RenderingRule = renderingRule;
    RasterLayer layer = new RasterLayer(serviceRaster);
};
serviceRaster.LoadAsync();

相关文章
|
2月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
53 9
|
2月前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
85 12
|
2月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
|
2月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
|
2月前
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
|
2月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
3月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
64 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
3月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
58 4
|
3月前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
82 5
|
3月前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!

热门文章

最新文章