Cesium应用篇:2影像服务(上)
文章中相关范例下载路径:https://yunpan.cn/cByQqkANWN7Pu 访问密码 823d
Cesium中提供了多种ImageryProvider方式,来满足用户的实际需求,但作为天朝的一份子,可惜的是,看似很多,但最终的选择却又是捉襟见肘。如果是国内数据,个人认为天地图的不错,其他的地图都有偏移,但天地图的数据在国外有欠缺,假如你有一个模型数据或者地形数据,恰好是国外的某一个城市,比如马赛等,天地图就满足不了这种场景,而Bing的地图则面临Key,国内数据清晰度等问题,而Google的数据则有很多不确定性,所以,除非很难有一种影像服务来实现一种大而全的效果。这不是技术问题,在此提出,就看实际中智者见智了。
影像服务综述
我们回到Cesium的影像服务上,如下是Cesium中BaseLayerPicker控件提供的各类影像服务:

如上可以看到,主要是Bing、Mapbox以及OpenStreetMap,以及ESRI四家地图服务,包括影像,影像+注记以及矢量三种形式。个人而言,Bing的地图不错,算是大而全,但需要Key,感觉偶尔会抽风,Mapbox是我非常喜欢的一家公司,很文艺,但和OSM一样,访问速度欠佳,而ESRI偶尔会有访问权限的问题,也不太适合作为全球级别的影像服务。其他几个要么我没用过,要么感觉不走寻常路。一不小心全给否的节奏。
Cesium目前支持的影像服务类型有:
- ArcGisMapServerImageryProvider
支持ArcGIS Online和Server的相关服务 - BingMapsImageryProvider
Bing地图影像,可以指定mapStyle,详见BingMapsStyle类 - createOpenStreetMapImageryProvider
OSM影像服务,根据不同的url选择不同的风格 - createTileMapServiceImageryProvider
看文档是根据MapTiler规范,貌似是可以自己下载瓦片,发布服务,类似ArcGIS影像服务的过程 - GoogleEarthImageryProvider
企业级服务,没有用过 - ImageryProvider
基类,所有的影像服务最终都基于此类,如果你需要扩展新的Provider也会继承该类 - MapboxImageryProvider
Mapbox影像服务,根据mapId指定地图风格 - SingleTileImageryProvider
单张图片的影像服务,适合离线数据或对影像数据要求并不高的场景下 - UrlTemplateImageryProvider
指定url的format模版,方便用户实现自己的Provider,比如国内的高德,腾讯等影像服务,url都是一个固定的规范,都可以通过该Provider轻松实现。而OSM也是通过该类实现的。 - WebMapServiceImageryProvider
符合WMS规范的影像服务都可以通过该类封装,指定具体参数实现 - WebMapTileServiceImageryProvider
服务WMTS1.0.0规范的影像服务,都可以通过该类实现,比如国内的天地图 - TileCoordinatesImageryProvider
渲染每一个瓦片的围,方便调试 - GridImageryProvider
渲染每一个瓦片内部的格网,了解每个瓦片的精细度
创建影像服务
ArcGisMapServerImageryProvider
Cesium提供了ArcGisMapServerImageryProvider,可以方便的加载ArcGIS online和Server上的数据。
首先获取该影像服务的地址,下面以ESRI_Imagery_World_2D为例,WGS1984坐标系,全球范围,只需要指定url,就可以在Cesium下快速加载该服务。

备注:在不通过控件指定影像服务时,需要指定baseLayerPicker为false,否则会报错。
BingMapsImageryProvider
Cesium中提供了BingMapsImageryProvider。使用方式和ArcGIS一样简单,代码如下:

其中可以指定mapStyle,选择多种风格,目前Cesium中支持AERIAL、AERIAL_WITH_LABELS、ROAD、ORDNANCE_SURVEY、COLLINS_BART五种。
createOpenStreetMapImageryProvider
Cesium中提供了加载OpenStreetMap的Provider,代码如下:

另外,Cesium还提供了基于OSM的另外两个服务地址,可供加载:watercolor、toner。在三维影像服务中,因为LOD的策略,可能会出现相邻的Tile中Z值不相同,大部分情况下不会导致问题,但有时候,可能相交处是文字,则可能会出现半个字的问题。因此,在三维中加载矢量的影像服务,还是有不少局限性的。

MapboxImageryProvider
Cesium提供了MapBox的加载方式,个人认为MapBox的地图非常清新,还是一个不错的选择。同时提供了mapbox.satellite、mapbox.streets、mapbox.streets-basic三种风格,代码如下:

SingleTileImageryProvider
如果你对影像数据没有过多要求,或者是在离线环境下,SingleTileImageryProvider应该能够满足你的需要,只需要一张本地的图片,就可以创建影像服务。代码如下:

url可以是相对该页面的相对路径,也可以是一个http的链接形式。因为该Provider仅支持经纬度投影,图片宽高比最好为2:1,否则会有拉伸。
另外,我们还可以在这个Provider上多做一些文章,比如搞一张透明的图片,达到一些虚幻的效果,或者在近地面实现一种类似平面的浏览效果,毕竟2D和3D在相机,数据单位上是有区别的。
比如隐藏地球主体后,叠加一些矢量面,突出主题.代码如下:

至此,Cesium中默认支持的影像服务,我们都有所涉及,并对最常用的这五类做了专门介绍和事例,下篇会基于Cesium提供的基类扩展Google,Baidu,天地图等影像服务,以及实际应用中的一些问题,比如多地图叠加,地图范围以及性能等。
Cesium应用篇:2影像服务(上)的更多相关文章
- 影像服务——加载CESIUM自带的影像服务
1.加载arcgis数据——ArcGisMapServerImageryProvider var viewer = new Cesium.Viewer("cesiumDiv",{ ...
- Cesium应用篇:2影像服务(下)
文章中相关范例下载路径:https://yunpan.cn/cByQqkANWN7Pu 访问密码 823d 上篇主要介绍了Cesium自带的影像Provider ,在本篇中,我们主要涉及到如何扩展这些 ...
- Cesium原理篇:5最长的一帧之影像
如果把地球比做一个人,地形就相当于这个人的骨骼,而影像就相当于这个人的外表了.之前的几个系列,我们全面的介绍了Cesium的地形内容,详见: Cesium原理篇:1最长的一帧之渲染调度 Cesium原 ...
- Cesium原理篇:7最长的一帧之Entity(上)
之前的最长的一帧系列,我们主要集中在地形和影像服务方面.简单说,之前我们都集中在地球是怎么造出来的,从这一系列开始,我们的目光从GLOBE上解放出来,看看球面上的地物是如何渲染的.本篇也是先开一个头, ...
- Devops 开发运维高级篇之微服务代码上传和代码检查
Devops 开发运维高级篇之微服务代码上传和代码检查 微服务持续集成(1)-项目代码上传到Gitlab 微服务持续集成(2)-从Gitlab拉取项目源码 微服务持续集成(3)-提交到SonarQub ...
- Cesium原理篇:3最长的一帧之地形(1)
前面我们从宏观上分析了Cesium的整体调度以及网格方面的内容,通过前两篇,读者应该可以比较清楚的明白一个Tile是怎么来的吧(如果还不明白全是我的错).接下来,在前两篇的基础上,我们着重讨论一下地形 ...
- Cesium原理篇:3最长的一帧之地形(2:高度图)
这一篇,接着上一篇,内容集中在高度图方式构建地球网格的细节方面. 此时,Globe对每一个切片(GlobeSurfaceTile)创建对应的TileTerrain类,用来维 ...
- Cesium原理篇:2最长的一帧之网格划分
上一篇我们从宏观上介绍了Cesium的渲染过程,本章延续上一章的内容,详细介绍一下Cesium网格划分的一些细节,包括如下几个方面: 流程 Tile四叉树的构建 LOD 流程 首先,通过上篇的类关系描 ...
- cesium原理篇(三)--地形(1)【转】
转自:http://www.cnblogs.com/fuckgiser/p/5824743.html 简述 前面我们从宏观上分析了Cesium的整体调度以及网格方面的内容,通过前两篇,读者应该可以比较 ...
随机推荐
- 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载
Sublime Text这款代码编辑器是Jeff 一直都在使用的,前段时间转用到版本3,因为感觉Sublime Text 3 启动速度更加快,运行更加流畅——虽然3 还是在Beta 阶段.下面就直接分 ...
- Apache服务器在80端口配置多域名虚拟主机的方法
我们在配置一台服务器的时候,如果只运行一个站点,往往过于浪费资源.Nginx和Apache都可以通过配置虚拟主机实现多站点.配置虚拟主机的方式主要有两种,一种是多个不同端口对应的多个虚拟主机站点,一种 ...
- jGestures: jQuery的手势事件插件
官网地址:http://jgestures.codeplex.com/文档版本号: v0.7,由neuedigitale编辑,2012年5月8日最新稳定版: jGestures v0.90 - sha ...
- 另类的表单数据"序列化"
背景:最近在做项目时,由于编辑页面需要提交的数据量有些多,而且在提交前还需要做一些逻辑处理,所以如果按照正常的方式,一个个的获取值然后拼接json对象传到后台的话相对工作量较大,而且容易出错,后期的维 ...
- SDOI 2016 征途 决策单调性
题目大意:有一个数列,将其分成m段,求最小方差 先弄出n^3的dp,打出决策点,然后发现决策点是单调递增的,决策单调性搞一搞就可以了 #include<bits/stdc++.h> #de ...
- Spring MVC中Session的正确用法<转>
Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...
- 剑指Offer面试题:3.替换空格
一.题目:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 在网络编程中 ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...
- 2013 duilib入门简明教程 -- 界面设计器 DuiDesigner (10)
上一个教程讲解了怎么布局最大化.最小化.关闭按钮,但是如果手动去计算这三个按钮的位置和大小的话,非常的不直观,也很不方便. 所以这一章准备介绍duilib的UI设计器,由于这个设计器很 ...