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

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

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

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

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

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

<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();

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

  1. 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView

    1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来("Quartz"版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC ...

  2. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据下载...

    1.前言 1.1.环境准备: ArcGIS for Desktop 10.4.1(10.2.1以上版本即可) ArcGIS for Server 10.4.1 (10.2.1以上版本即可) Postg ...

  3. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...

    1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...

  4. 《ArcGIS Runtime SDK for Android开发笔记》

    开发笔记之基础教程 ArcGIS Runtime SDK for Android 各版本下载地址 <ArcGIS Runtime SDK for Android开发笔记>--(1).And ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析...

    1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述

    1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步...

    1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据编辑...

    1.前言 在上一篇我们已经实现了离线地理数据库的下载,这一篇我们着重介绍离线数据库的加载与编辑. 由于ArcGIS Runtime SDK for Android 10.2.X版本并没提供要素绘制功能 ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用...

    1.前言 学习ArcGIS Runtime SDK开发,其实最推荐的学习方式是直接看官方的教程.示例代码和帮助文档,因为官方的示例一般来说都是目前技术最新,也是最详尽的.对于ArcGIS Runtim ...

最新文章

  1. 类加载器的分类及关系
  2. coredump调试的使用
  3. python-上传文件的几种方式
  4. 日常生活小技巧 -- Source Insight 教程
  5. WebSocket——[Error during WebSocket handshake: Unexpected response code: 403]解决方案
  6. jenkins 使用xctool 爆出: line 6: xctool: command not found
  7. 一个好习惯可以让自己享受一辈子
  8. spring bean加载过程_Spring的Bean加载容器机制
  9. Oliver运维管理系统之一庐山真面目
  10. 关于boot.ini文件里的/noexecute=optin
  11. 信号与系统基础简单知识概括
  12. node项目报错had too many unstable restarts (16). Stopped. “errored”
  13. excel单元格做下拉列表以及改变下拉列表的字体
  14. 基于Radon滤波反投影算法的CT图像重建matlab仿真
  15. LeetCode 第35题 搜索插入位置 做题记录
  16. 联想一体机电源键不亮_联想力压华为拿下6·18 PC“六冠王”,背后有何秘诀?...
  17. quickhit----快打小游戏
  18. lavavel 环境配置 summer版
  19. 计算机锁定不能强制选项无法关机,win7系统1909无法关机只能强制关机重启的解决办法...
  20. 深度 | 智慧城市背景下的“多规合一”标准探究

热门文章

  1. 26进制(字母)转十进制算法
  2. 【Oracle 学习笔记】Day 2 视图、序列、同义词
  3. MyEclipse连接oracle9i:invalid or unknown NLS parameter value specified错误
  4. git 基础教程总结
  5. 关键词 global 和 nonlocal
  6. 数据中心100G主流应用技术分析与市场预测
  7. Oracle 快速插入1000万条数据的实现方式
  8. 常用jQuery代码分享
  9. Cisco交换机中的flash,Rom,RAM,nvram的区别
  10. struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别