Hello Cesium

  • 一、辅助筑基的神器
  • 二、 什么也别问,先运行起来再说
  • 三、筑基完成,看看修炼境界的划分

一、辅助筑基的神器

工欲善其事,必先利其器。想敲起代码美滋滋,音乐和一个好用的开发工具都是不可或缺的。音乐自己去找吧,开发工具嘛。。。其实用记事本一样可以敲,就是有点费眼力劲儿。。。好用的开发工具数不胜数,而且萝卜青菜各有所爱,咱这里就推荐一个我比较喜欢用的VSCode。
浏览器访问https://code.visualstudio.com/,然后点击页面中间的那个大蓝色按钮(Download for Windows),就会自动下载了。下载完成后是个exe安装包,双击就可以正常安装,一直下一步就行,安装完成后,桌面上会多出来一个蓝色Visual Studio Code图标,这个VSCode就安装好了。

Cesium必须得被发布出来才能正常运行,所以我们还得弄一个可以发布网页的工具,这里推荐nginx(其实我自己是用tomcat),nginx用起来更简单一些。浏览器访问http://nginx.org/en/download.html,找到并点击nginx/Windows-1.21.2,就可实现nginx的下载,对下载的压缩包进行解压,进入解压后的文件夹,然后双击nginx.exe,会有个黑窗口一闪即逝,然后浏览器输入http://localhost:80,如果页面显示Welcome to nginx,则说明nginx启动成功,如果没有,则进入到conf目录下,VSCode打开nginx.conf,找到server 下的listen,把后面的80改成8088,然后再双击nginx.exe,浏览器输入http://localhost:8088,即可显示成功。再不然,就自行寻找解决方法吧。。。。



二、 什么也别问,先运行起来再说

1、在上述nginx的解压目录下的html文件夹内新建一个文件夹cesiumDemo
2、双击打开VSCode,点击文件菜单,在下拉菜单中点击新建文件,这时候VSCode会自动创建一个Untitled-1的空白文件。把下面的代码完整复制过去,然后按Ctrl+S键,这是保存的快捷键,这时候会弹出一个窗口让你选择保存路径和设定保存的文件名,文件名这块要改成demo1.html,后缀名一定要是html,保存路径选择1中新建的cesiumDemo文件夹。
3、保持互联网是畅通的!然后双击nginx.exe启动nginx服务,浏览器输入http://localhost:8088/cesiumDemo/demo1.html回车,页面加载完成后即可看到一个精美的蓝色星球悬浮在黑色的星空中。至此,Hello Cesium就成了,筑基也就成了。

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><script src="https://cesium.com/downloads/cesiumjs/releases/1.85/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.85/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
</head><body><div id="cesiumContainer"></div><script>var viewer = new Cesium.Viewer('cesiumContainer', {imageryProvider: new Cesium.UrlTemplateImageryProvider({url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"})});</script></div>
</body>
</html>


三、筑基完成,看看修炼境界的划分

Cesium是当下主流的三维WebGIS开源引擎,用应广泛,受益者众多。Cesium提供了丰富的API接口供开发者调用,以实现不同的业务需求。Cesium官方也提供了比较完善的API说明文档,但对于新人理解起来可能有点困难,有兴趣的可自行去Cesium官网学习(https://cesium.com/platform/cesiumjs/)。基于自己的理解,我将Cesium的使用方法划分成如下几个层次,由易到难,当然,也是由低性能到高性能的一个过程,划分层次只是个人理解,重在参考,别抬杠。并不一定所有的业务场景都得用性能高的方法实现,高性能对应的是更难于理解的开发方法,更不容易快速落地的开发逻辑,针对具体场景,在效率和性能之间做好平衡才好。

Cesium的Viewer要单独拿出来说,我们所有的创造最终都要由它来帮我们统一管理,统一调度,统一展现。
然后是Cesium的Entity体系的API,以Entity方式来实现我们的各种可视化结果,简单易懂,适合快速上手和快速出效果,但相应的封装太多,损失了大量性能,不适合于大数据量的场景。
那这时候就需要使用Cesium的Primitive体系的API,Primitive比Entity更偏底层一些,相应的性能有显著的改善。
但面对更大的数据量,更流畅的渲染要求时,常规Primitive开发方法仍旧不行。那我们就需要用到自定义Geometry来构建Primitive,自定义Geometry比使用Cesium提供的Geometry更直接的和WebGL打交道,甚至已经支持自定义Shader渲染,所以比使用常规Geometry构建Primitive在数据装载和渲染上有较快的提升。
但如果是几十上百万的数据量级,毫秒级的渲染要求,自定义Geometry也满足不了,那么这时候就要再进一步,自定义Primitive,抛掉Geometry的概念,直接用数据缓冲区将待渲染数据送给webgl渲染,至此甚至可以拿到最底层的webgl对象,用纯webgl做开发。再往下的话,我觉得可以脱离Cesium,直接基于Webgl做得了。。。但Cesium提供了大量的地理信息相关的参数、方法、投影、坐标系统等等那可能就都得自己做了。
后续的文章也会结合典型示例从Viewer一层层梳理到自定义Primitive,有些东西我也还在摸索中,希望大家一起学习,一起进步,有说的不准确的地方,欢迎大神及时指正。

WebGIS全栈修炼之路2——筑基,修出你的第一缕Cesium之气相关推荐

  1. WebGIS全栈修炼之路1——开篇一起梳理一下修炼之路

    修炼内容梳理 一.WebGIS全栈开发领域涉及到的内容 二.本门主要的修炼内容 三.写在最后 一.WebGIS全栈开发领域涉及到的内容 顾名思义,WebGIS全栈开发主要可以分成三个部分来理解,Web ...

  2. WebGIS全栈修炼之路3——内视丹田Viewer

    Hello Viewer 一.Viewer概述 二.Viewer常用的配置参数 三.Viewer常用的方法和属性 四.完整代码 一.Viewer概述 Viewer对象是我们使用Cesium必须构建的一 ...

  3. 全栈修炼之路,很漫长…

    虽然目前并没有对全栈工程师有一个具体的定义,不知道自己是否合格. 大势所趋的全栈开发.首先你能够配置全站开发的环境和工作流程,操作数据库,建立后端服务API,独立开发前端,从而开发一个包含前后端的完整 ...

  4. 我的编程之路:网编到全栈的漫长路

    为什么写这篇文章 把自己的经历分享出来,为正在迈上码农界的新人们加油打气 把自己这两年的积累的略微经验分享出来 简介 我呢?非科班出生,至今工作两年,打杂一年,真正做码农一年. 毕业前四年 这段时间你 ...

  5. 全栈工程师之路-Node.js

    2019独角兽企业重金招聘Python工程师标准>>> 全栈工程师之路-Node.js 高可用架构专用 原文[高可用架构] https://mp.weixin.qq.com/s?__ ...

  6. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

  7. CMS全栈开发之路总结

    CMS全栈开发之路总结 企业级CMS全栈开发之路总结 技术架构 1.CMS后台管理系统创建 2.node服务端搭建 3.CMS前台实现 流程图 SSR的优点 页面 4.服务器选配.Linux与Ngin ...

  8. 战争热诚的python全栈开发之路

    战争热诚的python全栈开发之路 从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链 ...

  9. ❤️程序员国企太安逸想辞职,又嫌私企大厂压力大996我该如何选择?(高级全栈自动化之路)

    我们的人生 人就是贱! 进了体制,国企嫌太安逸,没激情,一眼能看到二十年后的人生. 进了私企嫌压力大,996太累,没休闲时间.辞职了想做点小生意发现自己根本不是那料,去做一些底层工作嫌不体面,工资低, ...

最新文章

  1. 一分钟了解 TCP/IP 模型
  2. 【 FPGA 】常数( localparam )和参数( parameter )
  3. Gmail新增新功能 支援四种语言等智能功能
  4. File类的使用(java)
  5. 解决 wget 使用 https 下载报错的问题
  6. Android之Launcher分析和修改4——初始化加载数据
  7. 利用python寻找列表中相邻元素之差绝对值为1的所有最长链
  8. 第12章[12.4] 鼠标移入移除时弹出和关闭窗口
  9. 发一个招聘软件开发人员的帖子
  10. matlab isnumeric函数,matlab中isnan函数
  11. Master of Typing - Tutor for Mac(打字大师—盲打练习课程)
  12. 1048: 谭浩强C语言(第三版)习题6.4
  13. python中没有严格意义上的私有成员_尔雅尔雅学习通APP家园的治理:环境科学概论题库及答案...
  14. 计算机网络技术用苹果电脑,苹果电脑到底支持哪些常用软件
  15. Error: (list) object cannot be coerced to type 'double'
  16. 计算机d盘可以格式化吗,电脑d盘格式化对电脑有影响吗
  17. git 怎么回退已经push的版本_Git版本回退
  18. 没什么经验的UE/UI设计师如何应对面试
  19. 右键添加[显示、隐藏文件]
  20. 项目管理案例分析-小型旅游网站开发项目

热门文章

  1. Arty A7开发板 + PULPino开源处理器折腾笔记
  2. 收集了几个有趣的代码注释
  3. jsliang 陪你瞎叨叨 2
  4. python3.4勾股定理代码_用于解答算法题目的Python3代码框架
  5. 蔬菜干行业调研报告 - 市场现状分析与发展前景预测
  6. 百度飞桨,让AI落地有解!
  7. 【面试】AI常见的面试问题
  8. PBR来龙去脉十一:IBL继续积分部分
  9. js给网页中所有p元素添加onclick事件
  10. 面试磕磕碰碰,辛得蚂蚁高级工程师的技术笔记指导,终获P7岗offer