cesiumjs开发实践(四)

本文介绍了CesiumJS中的地形系统,包括STKWorldTerrain和SmallTerrain两种类型的特点及应用场景。详细讲述了SmallTerrain的生成过程及其使用的开源工具,并探讨了如何在本地部署地形服务。

地形介绍

 

cesiumjs中的地形系统是一种由流式瓦片数据生成地形的技术。


                         添加地形将视角放平时


                           地形显示wireframe


cesiumjs支持两种类型的地形,STK World Terrain和Small Terrain。

    STKWorld Terrain高分辨率, 基于quantized mesh的地形。这是一种基于网格的地形,可充分利用GL中的Shader来渲染,效果相当逼真。STK World Terrain使用了多种数据源,分别适应不同地区和不同精度时的情形。比如对于美国本土使用National Elevation Dataset (NED)的高程,精度3-30米;对于欧洲使用EU-DEM高程,精度30米;对于澳洲使用Australia SRTM-derived 1 Second DEM高程,精度30米;对于-6060纬度段使用CGIAR SRTM高程,精度90米;对于整个地球使用GTOPO30,精度1000米。STK World Terrain地形是怎样生成的是不公开的,如需应用于封闭的局域网时,则需购买AGISTK terrain server。但是AGI提供了一个webapi可供因特网上调用,并提供了这种地形的格式细节,期待早日有高手作出一个转换工具。

http://cesiumjs.org/data-and-assets/terrain/formats/quantized-mesh-1.0.html

 

     Small Terrain是中等高分辨率,基于heightmap的地形,渲染出的地形效果不如quantized mesh的地形,但也基本能接受。网上已经有一些开源的生成工具可以由DEM数据生成这种规范的.terrain文件,因此我们重点讨论这种类型的地形。

     生成工具是cesium googlegroup里一个俄国人提供的gdal2srtmtiles.pyhttps://groups.google.com/forum/#!topic/cesium-dev/rBieaEBJHiU),需要gdal库和numpy

具体用法 python gdal2srtmtiles.py --cesium  -z 0-15 -pgeodetic ‘YN_DEM.tif', 'I:\\tilesCache\\terrain_tiles'

YN_DEM.tif是输入地形源文件,是一个geotiff格式的高程数据,网络上有很多免费的高程数据,比较著名的SRTM90的,ASTER30的,都可以用作输入的地形数据源。terrain_tiles是生成的地形瓦片所在的目标目录,

-z 0-15参数表示zoom015级,级别越高越详细,数据量也越大。-p geodetic暂时不知道,估计与投影相关,--cesium表示生成cesium特定的地形。生成过程时间长短与源数据的大小有关,楼主的YN_DEM.tif覆盖云南全境的30米精度ASTER DEM1G多大小,头一天下班时运行,第二天下午生成完毕,8G多的瓦片,0-15级。


每个目录下都有.terrain,.hdr,.kml三种文件,我们只用到.terrain文件。

       发布为地形服务很简单,不需要任何服务器端编程知识,把terrain_tiles配置到webserverWebroot下的一个子目录就行,同时要把.terrain这种文件的Content-Type设为'application/octet-stream'加到web服务器的配置中,服务器端就算搞定。

      client端就更简单了,viewer中有个terrainProvider属性,直接new一个CesiumTerrainProvider就行。

?

1

2

3

4

5

var viewer = new Cesium.Viewer('cesiumContainer',{

    terrainProvider:new Cesium.CesiumTerrainProvider({

        url: "http://localhost:88/terrain_tiles"

    })

});

PSheightmap的地形总体上来说基本还原了地球表面应有的高低起伏,有些区域会有一些横断面像刀切一样失真,在一些对细节不是很在意的应用中还是很有吸引力的。

     在截稿时突然想到一个办法,既然AGI开放了STK World Terrainwebapi,那何不把这些高精度quantized mesh瓦片按所需区域下载下来存到数据库或文件系统上,这样本地局域网也能应用到高精度地形了,反正地形几十年也不变,不存在更新什么的。

本篇到此结束,下一篇《cesiumjs开发实践(五) 坐标系统》
【多变量输入超前多步预测】基于CNN-BiLSTM的光伏功率预测研究(Matlab代码实现)内容概要:本文介绍了基于CNN-BiLSTM模型的多变量输入超前多步光伏功率预测方法,并提供了Matlab代码实现。该研究结合卷积神经网络(CNN)强大的特征提取能力与双向长短期记忆网络(BiLSTM)对时间序列前后依赖关系的捕捉能力,构建了一个高效的深度学习预测模型。模型输入包含多个影响光伏发电的气象与环境变量,能够实现对未来多个时间步长的光伏功率进行精确预测,适用于复杂多变的实际应用场景。文中详细阐述了数据预处理、模型结构设计、训练流程及实验验证过程,展示了该方法相较于传统模型在预测精度和稳定性方面的优势。; 适合人群:具备一定机器学习和深度学习基础,熟悉Matlab编程,从事新能源预测、电力系统分析或相关领域研究的研发人员与高校研究生。; 使用场景及目标:①应用于光伏电站功率预测系统,提升电网调度的准确性与稳定性;②为可再生能源并网管理、能量存储规划及电力市场交易提供可靠的数据支持;③作为深度学习在时间序列多步预测中的典型案例,用于科研复现与教学参考。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注数据归一化、CNN特征提取层设计、BiLSTM时序建模及多步预测策略的实现细节,同时可尝试引入更多外部变量或优化网络结构以进一步提升预测性能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值