• Cesium 基础知识和文档记录


    Cesium开发基础

    CesiumLab--系统重启

    目录

    • 一,关于我们
    • 二,Cesium介绍
    • 三,快速入门
    • 四,常见问题
    • 五,学习方法

    一,关于我们 --系统重启

    • 2008年毕业于北京科技大学硕士,研究方向虚拟现实。
    • 曾在灵图软件、易伟航科技就职。参与研发VRmap、易景地球、桔子地图等多款3d

    GIS和地图产品。
    • CesiumLab作者
    • 目前主要研究空间大数据的预处理以及优化。
    • 非大神,非砖家,只是偶入GIS领域的非主流野生程序员

    一,关于我们--VTXF

    • 2008年毕业于北京航空航天大学硕士,研究方向计算机辅助设计
    • 曾在伟景行科技、飞渡科技就职。参与研发多款桌面端、web端三维渲染产品
    • 目前主要研究针对Cesium渲染效果的深度定制和优化。

    一,关于我们

    • 为什么我们要提供培训?

    二,CESIUM介绍– CESIUM在项目中的定位

    服务端 Google, Baidu,高德,天地图 客户端

    业 Mapbox BS Cesium
    务 项目自建 Leaflet
    服 (基于java,.net,等任何开发语言)


    GeoServer HTTP OpenLayers 3D
    2D
    数 2D N个数字
    据 GIS数据库 ArcGIS 地球SDK
    ArcGIS Server Engine osgEarth
    CS
    服 Cesium ION QGIS
    务 文件 3D

    CesiumLab Google Earth

    二,Cesium介绍—Cesium的依赖性

    • 基于HTML5标准,无插件,跨平台
    • 无法独立运行,依赖于浏览器(CesiumLab基于Electron架构)
    • 浏览器又是基于HTTP协议的,所以Cesium要正确运行必须有HTTP Server
    • 但是HTTP Server的实现不限于开发语言和服务器,学Cesium可以不用nodejs

    二, Cesium介绍– 官方介绍

    • 一个开源的javascript三维虚拟地球/地图
    • https://cesiumjs.org/
    • Cesium的目标是动态数据可视化的虚拟地球领导者,尽一切可能去优化性能、精

    度、效果,易用性、平台支撑、内容。
    • Cesium经过同行的公开评审,单元测试覆盖90%以上代码,完整的文档,以及一个

    非常专业的开发团队。

    二, Cesium介绍– 所有功能

    • 使用3d tiles 格式流式加载各种不同的3d数据,包含 • 支持各种几何体:点、线、面、标注、公告牌、立方体、球体、
    倾斜摄影模型、三维建筑物、CAD和BIM的外部和内 椭球体、圆柱体、走廊(corridors)、管径、墙体
    部,点云数据。并支持样式配置和用户交互操作。
    • 可视化效果包括:基于太阳位置的阴影、自身阴影、柔和阴影。
    • 全球高精度地形数据可视化,支持地形夸张效果、 • 大气、雾、太阳、阳光、月亮、星星、水面。
    以及可编程实现的等高线和坡度分析效果。 • 粒子特效:烟、火、火花。
    • 地形、模型、3d tiles模型的面裁剪。
    • 支持多种资源的图像图层,包括WMS,TMS, • 对象点选和地形点选。
    WMTS以及时序图像。图像支持透明度叠加、亮度、 • 支持鼠标和触摸操作的缩放、渲染、惯性平移、飞行、任意视角、
    对比度、GAMMA、色调、饱和度都可以动态调整。
    支持图像的卷帘对比。 地形碰撞检测。
    • 支持3d地球、2d地图、2.5d哥伦布模式。3d视图可以使用透视和正
    • 支持标准的矢量格式KML、GeoJSON、TopoJSON,
    以及矢量的贴地效果。 视两种投影方式。
    • 支持点、标注、公告牌的聚集效果。
    • 三维模型支持gltf2.0标准的PBR材质、动画、蒙皮和
    变形效果。贴地以及高亮效果。

    • 使用CZML支持动态时序数据的展示。

    三, Cesium介绍-- 知识体系

    • Cesium是一个跨界SDK,涉及三个知识领域

    • Web前端 Web前端 图形学
    • 计算机图形学
    • 地理信息系统(GIS) html,div,css vertex
    js ajax json normal
    Cesium texture
    jquery material
    vue,react shader

    … …

    GIS
    vector raster

    wkt epsg
    wms wfs
    geojson kml



    三,快速入门 – 源码获取

    • 官网下载 https://cesiumjs.org/downloads/
    • GitHub上下载 https://github.com/AnalyticalGraphicsInc/cesium
    • 安装NodeJS https://nodejs.org/en/
    • npm install -- 安装cesium开发和运行中依赖的第三方nodejs包
    • npm run release – 把cesium各模块源码打包压缩生成统一cesium.js 命令深度解释
    • npm start – 开启cesium的测试Http Server
    • Sandcastle – Cesium教室

    三,快速入门 – 最小项目

    • npm install -g http-server
    • http-server 简单http服务器
    • vscode 免费开源的开发神器
    • 新建目录,新建index.html ,拷贝cesium开发包
    • 最小测试页面
    • http-server

    三,快速入门 – 学习路线

    • Viewer 类学习 -- 一切API的入口

    • Camera类学习 -- 想去哪里去哪里( Cartesian3和Cartographic)

    持 • ImageryLayer类学习 -- 地球原来如此多姿( ImageryProvider类)

    • TerrainProvider类学习 – 这才是“真”三维( sampleTerrain)

    深 • Entity API – 与地球交互起来( DataSource, Scene.pick、 Property)


    • Cesium3DTileset类 -- 让场景更细致真实点( Cesium3DTileStyle类)

    • Primitive API – 性能提升第一步( GeometryInstance类、 Geometry类)

    • Fabric – 玩点高级的( Appearance类, Material类)

    • ParticleSystem -- 锦上添点“花”( Particle类, ParticleEmitter类)

    三,快速入门-UI控件配置

    • 去掉cesium默认的版权信息
    • 去掉动画控件、地址搜索控件、图层选择控件,操作指南控件

    • 自定义默认视点

    三,快速入门– 全球地形和谷歌影像

    • 谷歌地图影像
    • Cesium全球地形

    三,快速入门 --坐标系统

    • WGS84坐标系定义
    • 长半轴:6378137.0
    • Cartographic 制图坐标(longitude, latitude, height),对应经纬度坐标,不过是弧度表示,此类

    主要用在用户接口上,理解起来更直观。
    • Cartesian3 笛卡尔直角坐标系(x,y,z) 做空间计算使用
    • Cartographic -> Cartesian3 Cartographic . toCartesian
    • Cartesian3-> Cartographic Cartographic .fromCartesian
    • 理解Cartesian3.dot、 cross、 normalize,
    • 注意result参数

    三,快速入门 -Camera对象

    • var camera = viewer.camera;
    • position 相机位置
    • heading(朝向)、pith(俯仰) 、 roll(翻滚)
    • flyTo 直接操作相机参数
    • 自动正北
    • flyToBoundingSphere
    • Viewer.flyTo 和 zoomTo 依据对象位置计算相机参数

    三,快速入门 -lookAt

    • HeadingPitchRange(heading, pitch, range)
    • lookAt(target, offset)

    二,快速入门--Entity

    • 添加一个最简单的图标点
    • position,name,description
    • 添加一个三维模型

    二,快速入门--3d tile特点

    • 3d tiles的特点 https://cesium.com/blog/2015/08/10/introducing-3d-tiles/
    • 协议完全开放:任何组织机构都可以用此标准来定义自己的数据。
    • 渐进加载和渲染:这是3dtiles的主要目的,采用HLOD技术,保证只加载和渲染和当前精度匹配的数据。
    • 面向三维空间:定义在三维空间中,不仅仅是点、线、面等常规二维数据
    • 可交互:支持鼠标选择和高亮
    • 样式可配置:根据对象属性修改对象的显示样式。
    • 更强的适应性:空间索引不仅仅支持常规四叉树,可以根据数据内容动态构建索引树。
    • 更强的灵活性:动态调整数据加载精度
    • 更广泛的数据支持:点云(pnts)、三维模型(b3dm,i3dm)、甚至地形、矢量(vctr)都可以用3d tiles格式定义。
    • 精度:使用矩阵偏移解决大坐标值的漂移问题
    • 实时的:支持动态数据

    二,快速入门--3d tile使用

    • 使用Cesium3DTileset

    readyPromise

    • 高度调整

    fromTranslation

    • 中心位置调整

    eastNorthUpToFixedFrame

    • 鼠标点选&属性输出

    Cesium3DTileFeature

    二,快速入门– 鼠标交互&自定义气泡

    • scene.pick,InputAction,scene.pickPosition
    • 再次例证cesium完全兼容HTML标准

    四,新手常见问题– 问题定位

    • Cesium是个跨界产品,前端、图形学、GIS相关的问题都可能会碰到
    • 判断问题属于哪个领域,更容易解决问题
    • 问题永远无法罗列,下面就几个常见简单问题分析下

    四,新手常见问题– 404问题

    • 症状: 浏览器输出404错误,所加载的对象没显示
    • 问题定位:web前端开发,与cesium无关
    • 问题复现:把资源的地址拷贝出来在浏览器地址栏里访问试下
    • 问题原因:

    资源相对路径不对、大小写敏感(某些服务器比如tomcat)、中文字符(某些页面
    和服务器编码不一致)

    四,新手常见问题– 跨域问题

    • 症状: 浏览器输出CORS policy错误,所加载的对象没显示

    • 问题定位:web前端开发,与cesium无关

    • 问题复现:页面引用的一些不在当前页面地址的资源

    • 问题解决: 服务器 页面
    跨域问题的终极解决方法在服务端 外站资源
    若服务端代码可改:添加跨域头

    若服务端不可控:添加代理服务器 服务器 页面

    外站资源

    四,新手常见问题– 模型漂移

    • 症状: 浏览器输出404错误,所加载的对象没显示
    • 问题定位:图形学,与cesium有关
    • 问题复现:模型和地形的相对高度不一致
    • 问题解决:

    1, viewer.scene.globe.depthTestAgainstTerrain=true;
    2,调节对象高度;
    3, viewer.scene. globe. depthTestAgainstTerrain=false;

    四,新手常见问题– 底图偏移

    • 症状: 浏览器输出404错误,所加载的对象没显示
    • 问题定位:GIS数据源,与cesium有关
    • 问题复现:国内公开访问的底图(除天地图)都有火星偏移
    • 问题解决:

    不要采用有偏移的底图数据(可以使用天地图底图)
    或者实时编译修正

    五,学习方法

    • 带着需求去学 -- 目标明确、事半功倍,从Sandcastle中寻找近似示例
    • 从官方教程开始 -- 体会研发者的苦心,从易到难,整体框架把握
    • 学会查用户手册 -- 绝大部分问题的标准答案
    • 跟踪源码 -- 善用GitHub去搜索代码
    • 加入Cesium实验室(qq群:595512567) -- 大家一起进步
    • 资料汇总

    五,学习方法– 进阶之路

    • Web前端方向:Cesium与webpack(裁剪以及压缩),Cesium与vue(框架设计,
    嵌入复杂业务系统),Cesium的UI(UI设计,定制可复用的Cesium交互界面)

    • 图形学方向:WebGL深入,基于Cesium的可视化定制(视阈、水淹,水面、热力
    图,流场图,飞线图,扫描图)

    • 数据预处理方向:投影变换,空间索引,LOD,3dtile生成,数据存储,数据分发
    服务,解决超大空间数据如何在Cesium上流畅可视化的问题。

    五,学习方法 --后续可能课程

    • 前端开发框架步步通(1课时) • 地形数据处理&可视化(1课时)
    webpack入门,VUE入门,框架设计
    数据来源,arcmap操作,cesiumlab处理,cesium加载、高
    • 图形学基础(1课时) 程&坡度着色以及等高线
    三维向量、矩阵、顶点、法向量、纹理坐标、 webgl入门
    • 影像数据处理&可视化(2课时)
    • Primitive API 使用 (1课时)
    Geometry & Fabric 数据来源,arcmap操作、cesiumlab处理,arcgis切片、
    geoserver切片,cesium加载,亮度,对比度等调整
    • 基于Cesium的高级渲染(1课时)
    czm_* 函数总结、简单可视阈效果开发 • MAX、BIM数据处理&可视化(1课时)

    数据导出,cesiumlab处理详细参数分析,cesium加载,场
    景结构定位,点击交互

    • 倾斜、矢量面处理&可视化(1课时)

    斜数据处理、单体化矢量制作、cesium加载,单体化着色

    谢谢

  • 相关阅读:
    【flutter-mobx】Flutter 状态管理- 使用 MobX实现计数器
    数字图像处理MATLAB
    机器学习【决策树算法2】
    【mediasoup】TransportCongestionControlClient 1: 代码走读
    【密码学复习】第九讲 密钥管理(二)
    全网独家·首发2022年100家公司真实的面试题笔试题汇总
    如何开发一个微信小程序
    day03-2-拓展
    【软件基础】pycharm2021.3.2安装汉化和python3.10.1环境配置
    我为什么选择Wiki.js记笔记?
  • 原文地址:https://blog.csdn.net/vcit102/article/details/127753764