cesium-加载DEM数据

DEM介绍

数字高程模型(Digital Elevation Model),简称DEM,是通过有限的地形高程数据实现对地面地形的数字化模拟(即地形表面形态的数字化表达),它是用一组有序数值阵列形式表示地面高程的一种实体地面模型,是数字地形模型(Digital Terrain Model,简称DTM)的一个分支,其它各种地形特征值均可由此派生。

一般认为,DTM是描述包括高程在内的各种地貌因子,如坡度、坡向、坡度变化率等因子在内的线性和非线性组合的空间分布,其中DEM是零阶单纯的单项数字地貌模型,其他如坡度、坡向及坡度变化率等地貌特性可在DEM的基础上派生。

加载cesium默认DEM

cesium有自己发布的DEM图层,如果要使用cesium默认的DEM数据,可能需要科学上网(懂的都懂)

配置Cesium的DEM图层

    //初始页面加载Cesium.Ion.defaultAccessToken = cesium_tk;let viewer = new Cesium.Viewer('cesiumContainer', {geocoder: false,   // 位置查找工具baseLayerPicker: false,// 图层选择器(地形影像服务)timeline: false, // 底部时间线homeButton: false,// 视角返回初始位置fullscreenButton: false, // 全屏animation: false,   // 左下角仪表盘(动画器件)sceneModePicker: false,// 选择视角的模式(球体、平铺、斜视平铺)navigationHelpButton: false, //导航帮助按钮imageryProvider: new Cesium.WebMapTileServiceImageryProvider({url: TDT_IMG_C,layer: "tdtImg_c",style: "default",format: "tiles",tileMatrixSetID: "c",subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],tilingScheme: new Cesium.GeographicTilingScheme(),tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],maximumLevel: 50,show: false}),terrainProvider : Cesium.createWorldTerrain({//cesium的DEM数据图层requestWaterMask : true})});

核心代码

        terrainProvider : Cesium.createWorldTerrain({//cesium的DEM数据图层requestWaterMask : true})

实现效果

加载自定义DEM数据

有些时候我们需要使用自己发布DEM数据,这里我使用NGINX发布DEM切片数据

核心代码

    let terrainProvider = new Cesium.CesiumTerrainProvider({url: 'http://192.168.1.243:8000/terrain/NxZ4xz2h'});viewer.terrainProvider = terrainProvider;

完整代码

<!DOCTYPE html>
<html lang="en">
<head><!-- Use correct character set. --><meta charset="utf-8"/><!-- Tell IE to use the latest, best version. --><meta http-equiv="X-UA-Compatible" content="IE=edge"/><!-- Make the application on mobile take up the full browser screen and disable user scaling. --><meta name="viewport"content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/><title>cesium加载DEM</title><script src="http://192.168.1.243:8088/lib/Cesium-1.78/Build/Cesium/Cesium.js"></script><style>@import url(http://192.168.1.243:8088/lib/Cesium-1.78/Build/Cesium/Widgets/widgets.css);html,body,#cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;}</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script>//天地图tokenlet TDT_tk = "token";//Cesium tokenlet cesium_tk = "token";//天地图影像let TDT_IMG_C = "http://{s}.tianditu.gov.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0" +"&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +"&style=default&format=tiles&tk=" + TDT_tk;//标注let TDT_CIA_C = "http://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0" +"&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +"&style=default&format=tiles&tk=" + TDT_tk;//初始页面加载Cesium.Ion.defaultAccessToken = cesium_tk;let viewer = new Cesium.Viewer('cesiumContainer', {geocoder: false,   // 位置查找工具baseLayerPicker: false,// 图层选择器(地形影像服务)timeline: false, // 底部时间线homeButton: false,// 视角返回初始位置fullscreenButton: false, // 全屏animation: false,   // 左下角仪表盘(动画器件)sceneModePicker: false,// 选择视角的模式(球体、平铺、斜视平铺)navigationHelpButton: false, //导航帮助按钮imageryProvider: new Cesium.WebMapTileServiceImageryProvider({url: TDT_IMG_C,layer: "tdtImg_c",style: "default",format: "tiles",tileMatrixSetID: "c",subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],tilingScheme: new Cesium.GeographicTilingScheme(),tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],maximumLevel: 50,show: false})});//调用影响中文注记服务viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: TDT_CIA_C,layer: "tdtImg_c",style: "default",format: "tiles",tileMatrixSetID: "c",subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],tilingScheme: new Cesium.GeographicTilingScheme(),tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],maximumLevel: 50,show: false}))// 去除版权信息viewer._cesiumWidget._creditContainer.style.display = "none";let terrainProvider = new Cesium.CesiumTerrainProvider({url: 'http://192.168.1.243:8000/terrain/NxZ4xz2h'});viewer.terrainProvider = terrainProvider;viewer.camera.flyTo({destination:Cesium.Cartesian3.fromDegrees(87.54791, 29.57025, 17863.0),orientation: {heading: Cesium.Math.toRadians(0.0),pitch: Cesium.Math.toRadians(-25.0),roll: 0.0}});
</script></body>
</html>

实现效果

补充

在加载dem数据时会发现,由于我们的DEM数据精度低,很多地方的起伏就很不明显
这时为了凸显出起伏的效果,我们得拉伸dem数据,这里有两种方式来处理

  1. 使用数据处理软件直接对dem数据处理,重新计算栅格的值
  2. 使用cesium来设置全局dem数据的参数

这里我们介绍一下前端怎么处理。cesium在1.83版本后新增来两个属性terrainExaggeration和terrainExaggerationRelativeHeight。

官方文档介绍

代码实现

这里我将起伏拉伸了四倍

//用于夸大地形的标量。默认为1.0(不夸张)。值2.0将地形缩放 2 倍。的值0.0使地形完全平坦。请注意,地形夸大不会修改任何其他图元,因为它们是相对于椭圆体定位的。
viewer.scene.globe.terrainExaggeration=4;
//夸大地形的高度。默认为0.0(相对于椭球表面缩放)。高于此高度的地形将向上缩放,低于此高度的地形将向下缩放。请注意,地形夸大不会修改任何其他图元,因为它们是相对于椭圆体定位的。如果Globe#terrainExaggeration是1.0这个值将没有效果。
viewer.scene.globe.terrainExaggerationRelativeHeight=1.0;

cesium-加载DEM数据(可拉伸)相关推荐

  1. 首次使用Cesium加载3D数据不成功

    接此: https://blog.csdn.net/bcbobo21cn/article/details/110454547 参阅相关教程:Cesium加载3D数据是通过3D Tiles进行: 3D ...

  2. Cesium加载大数据量地下管线

    Cesium加载大数据量地下管线 Cesium优化加载 管线加载 管井.摄像头.交通信号灯等模型加载 与倾斜摄影模型结合加载 Cesium优化加载 管线.管井.路灯.交通信号灯.接电箱等模型使用Pri ...

  3. 首次使用Cesium加载3D数据成功

    接此: https://blog.csdn.net/bcbobo21cn/article/details/111305160 `代码同前文:加载不同的数据,都不能加载出来: var palaceTil ...

  4. Cesium加载GeoJson数据(shp转化的json数据)

    1.shp转换成json格式 此处整理了两种shp转为json格式的方式:一是使用工具:二是使用ArcGIS进行转换. 1.1.ArcGIS转换 1.使用ArcGIS将shp文件的地理坐标设置为WGS ...

  5. vite+cesium加载3DTile数据

    Cesium 3D Tile是Cesium的一种特有的3D模型格式,其文件名后缀为.b3dm,而要在自己开发的平台上调用这些3D Tile,一般为通过后缀为.json格式的文件来调用.b3dm格式的3 ...

  6. 自己写的Cesium加载天地图数据服务的方法(亲测可用)

    前提条件 1.首先需要了解天地图都有哪些数据服务,具体详见天地图API介绍,如下图所示: 如下地址我将加粗的"vec_c"成为图层标签. http://t0.tianditu.go ...

  7. cesium加载气象数据

    通过cesium的postProcessStages接口改变fragmentShader来实现这些效果 addsnow() {     //删除       if (this.snow) this.v ...

  8. cesium采用primitive方式加载geojson数据

    cesium采用primitive方式加载geojson数据 cesium加载geojson数据有自带的接口GeoJsonDataSource和演示 示例,使用的是entity方式来加载数据,而ent ...

  9. cesium-加载DEM数据

    DEM介绍 数字高程模型(Digital Elevation Model),简称DEM,是通过有限的地形高程数据实现对地面地形的数字化模拟(即地形表面形态的数字化表达),它是用一组有序数值阵列形式表示 ...

  10. QGIS离线GeoJSON数据,使用Cesium加载并根据楼层高度拉伸(weixin公众号【图说GIS】)

    前言 往往好多事情是需求推动的,正好一个网友在群里问到"怎么让Cesium加载GeoJSON的白膜并贴在地形上?",联系到他,要了他的数据,完成了代码并测试通过.正好出差,而且一个 ...

最新文章

  1. ArcEngine中的缩放地图
  2. 我的世界之史蒂夫生存记
  3. C++的cin和cout取消同步
  4. VTK:可视化算法之ImageGradient
  5. WebForm编辑器的相关资源
  6. 程序员自我提高的几点建议 很实诚
  7. 服务器系统日志6008,DELL服务器宕机事件6008
  8. 不适合学计算机的理由,哪些人不适合学计算机 原因是什么
  9. 单板计算机作用上位机,SCB-1单板机的基本操作
  10. codeblocks 汉化教程
  11. html 分享页面到微博qq空间
  12. 超星未来:让智能驾驶更简单! | 百万人学AI评选
  13. Oracle 从入门到精通系列 - 思维导图计划
  14. cfa的pv怎么用计算机算,怎么用金融计算器算pv(金融计算器怎么用)
  15. 用计算机模拟地球诞生,计算机模拟显示:地球生命或源自太空外星微生物
  16. IQueryable VS IEnumerable
  17. Kubuntu 15.10 高清截图欣赏
  18. 【VSCode PlatformIO】STC8系列SDCC专用头文件内容分享
  19. Qt如何生成license文件
  20. 回归模型、回归函数和回归方程的区别

热门文章

  1. cmder 下载及安装
  2. ISO 7064:1983.MOD11-2校验码计算法(身份证18位效验码计算)
  3. C/C++编程:log4cpp使用学习
  4. 【NDSS 2021】On the Insecurity of SMS One-Time Password Messages against Local Attackers 论文笔记
  5. 《WINDOWS游戏编程之从零开始》第四章学习笔记
  6. Python微信打飞机游戏编程学习笔记04
  7. Blue Prism宣布融资1亿英镑,创始人兼首席执行官宣布离职
  8. NAT和代理服务器的调研
  9. 【项目总结】基于STM32的物流搬运小车
  10. Flash loader demo下载与使用之最小系统STM32C8T6使用USB转TTL串口下载