大数据最新兔年首文迎新春-Cesium橘子洲烟花礼赞_橘子洲头路网数据(3),行业寒冬

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

3、绿色燃放

虽然现在难得遇到一次橘子洲头的烟花燃放,但作为技术人,可以充分利用WebGL技术,结合时空地理地图,地形数据来一场实时可见的烟花燃放盛况。在这里遇见岳麓山、遇见橘子洲头,山水洲城的盛宴。在本文中基于Cesium开源框架,采用开源WebGL技术,叠加全国影像地图(本地私有化),标签路网数据、地形数据,采用粒子系统,实现烟花燃放的效果。先来一张效果图开胃吧。

二、Cesium烟花实现

1、相关依赖

由于采用Cesium开源实现,因此基础的依赖于Cesium.js,感兴趣的朋友可以自行在github(cesium github)或者官方网站(cesium)上下载相关依赖。Cesium可以基于原生的html5和javascript来进行运行,也支持和现代流程框架React和Vue等前端框架进行集成开发。可以根据自己的技术栈来合理选型。

将下载之后的Cesium编译后的js文件复制到工程的Build目录下,如下所示:

在上一层的Documentation目录中是同版本对应的API文档,您可以直接打开html页面,这是最全的API介绍文档。

2、新建html页面

在cesiumdemo或者任意目录下新建fireworks2.html,关键代码如下所示:

<!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>大展宏兔,大吉大利</title>
    <script src="Build/Cesium/Cesium.js"></script>
    <style>
      @import url(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>
  </body>
</html>

在上面的代码中通过引入Cesium.js,并且在页面中创建了一个div用于渲染展示cesium地球组件。但这是还未将cesium和页面元素进行绑定,也没有加载加载相应的底图和地形数据。

3、底图和地形数据加载

下面将通过UrlTemplateImageryProvider对象来进行Cesium的底图对象定义,示例代如下所示:

//加载影像底图
var imageryProvider = new Cesium.UrlTemplateImageryProvider({
    url: "http://localhost:8086/data/basemap_water/{z}/{x}/{y}.png",
    tilingScheme: new Cesium.WebMercatorTilingScheme(),
    fileExtension: 'png',
    minimumLevel: 1,
    maximumLevel: 16
});

var labelProvider = new Cesium.UrlTemplateImageryProvider({
    url: "http://localhost:8086/data/basemap_nowater/1-10label/{z}/{x}/{y}.png",
    tilingScheme: new Cesium.GeographicTilingScheme(),//投影方式为经纬度直投,否则路网不对
    fileExtension: 'png',
    minimumLevel: 1,
    maximumLevel: 10
 });

//加载本地地形数据
var terrainLayer = new Cesium.CesiumTerrainProvider({
    url: "http://localhost:8086/data/hunanterrain",
    // 请求照明
    requestVertexNormals: true,
    // 请求水波纹效果
    requestWaterMask: false
});

上面的代码定义了地形数据,同时使用如下的代码将地形数据、底图数据都添加到Cesium的视图对象中,并且将标签图层也添加到对象中。用于系统,同时将cesium的展示视角初始调整为橘子洲的经纬度坐标。

var viewer = new Cesium.Viewer('cesiumContainer',{
    imageryProvider:imageryProvider,
    terrainProvider: terrainLayer,
    baseLayerPicker:false,
    homeButton: true,
    baseLayerPicker: false,
    animation: false,
    timeline: false,
    navigationHelpButton: false,
    geocoder: false,
    sceneModePicker: false,
    shouldAnimate: true,
});

// 设置相机初始位置
var homeCameraView = {
        destination: Cesium.Cartesian3.fromDegrees(112.955074,28.16843,507.0480578185452),
            orientation: {
                heading:5.656571359006588,
                pitch: -0.28428181994862656,
                roll: 0
            },
        };

viewer.camera.setView(homeCameraView);

viewer.imageryLayers.addImageryProvider(labelProvider);
// 隐藏版权信息
viewer._cesiumWidget._creditContainer.style.display = "none";

viewer.scene.globe.enableLighting = false;//关闭光照

4、粒子系统

粒子系统是WebGL中的一个非常重要的组成部分,通过粒子系统可以实现很多的特效。粒子系统是一种模拟复杂物理效应的图形技术。粒子系统是小图片的集合,当放到一起观察它们时,会形成一个更复杂的“模糊”对象,例如火、烟雾、气候,或者烟火(fireworks)。通过使用例如初始位置、速度和寿命属性来指定单个粒子的行为,可以控制这些复杂的效果。这里推荐一篇介绍粒子系统比较简单同时讲解比较清楚的入门博客Cesium中文教程-粒子系统介绍(Introduction to Particle Systems)cesium粒子系统介绍,更多的关于粒子系统的说明,可以上WebGL知识去深入学习,这里不做特别深入的讲解(因为博主也学得不深)。本文结合代码来简要说明粒子系统的一些知识。

模拟图片源,粒子系统可以理解是多个小图片的集合整体渲染。所以可以基于外部图片的渲染,比如爆炸的效果,同时作为烟花的特效,这里采用模拟图片实现。关键代码如下:

let particleCanvas;

function getImage() {
  if (!Cesium.defined(particleCanvas)) {
        particleCanvas = document.createElement("canvas");
        particleCanvas.width = 30;
        particleCanvas.height = 30;
        const context2D = particleCanvas.getContext("2d");
        context2D.beginPath();
        context2D.arc(10, 10, 10, 0, Cesium.Math.TWO_PI, true);
        context2D.closePath();
        context2D.fillStyle = "rgb(255, 255, 255)";
        context2D.fill();
       }
   return particleCanvas;
}

粒子系统在Cesium被进行了简单封装,开发者通过API进行简单调用即可。

new Cesium.ParticleSystem({
    image: getImage(),
    startColor: color,
    endColor: color.withAlpha(0.0),
    particleLife: life,
    speed: 30.0,
    imageSize: particlePixelSize,
    emissionRate: 0,
    emitter: new Cesium.SphereEmitter(1.8),
    bursts: bursts,


![img](https://img-blog.csdnimg.cn/img_convert/ce2ff2a4cc3c7338f65dc6f99e8d8788.png)
![img](https://img-blog.csdnimg.cn/img_convert/b9b8d8eb6381c07671a68d79c05a5429.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

.(img-DYctSs25-1715773047321)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
deja_vu3d - cesium是一款功能强大的地球可视化框架。它基于Cesium.js开发,提供了丰富的功能集,可用于创建令人惊叹的三维地球模型。 deja_vu3d - cesium的主要功能包括: 1. 三维地球可视化:deja_vu3d - cesium允许用户展示全球范围内的地理数据,包括地形、海洋、建筑物等。它提供了高度精确的地球模型,可以实时旋转和缩放,让用户以全新的视角探索地球表面。 2. 实时数据可视化:该框架支持对实时数据的可视化,可以将传感器数据、气象数据等实时更新的数据集成到地球模型中。用户可以通过动态的图表、标签和交互式元素来直观地理解数据趋势和模式。 3. 矢量和栅格数据显示:deja_vu3d - cesium支持导入和展示各种矢量和栅格数据。用户可以将自己的地理信息数据集成到地球模型中,进行可视化和空间分析。 4. 相机和视角控制:框架提供了强大的相机和视角控制功能,用户可以自由调整视角、俯瞰地球表面、漫游各个地区。这使得用户能够更好地理解地理空间关系和模式,并更好地展示和交流地理数据。 5. 动画和时间轴:deja_vu3d - cesium允许用户创建动画效果,通过时间轴控制地球模型的演变。这对于展示历史数据、模拟气候变化等具有重要意义。 总而言之,deja_vu3d - cesium是一款功能强大的地球可视化框架,它提供了丰富的功能集,帮助用户创建令人惊叹的三维地球模型,并可可视化和分析各种地理数据。无论是用于科研、教育还是商业应用,deja_vu3d - cesium都能为用户提供出色的地球可视化体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值