cesium教程(三):地形、坐标
Cesium是一款开源的、高性能的3D地球和地图可视化平台,它允许开发者创建基于Web的、交互式的地理空间应用程序。
Cesium的核心是一个WebGL驱动的引擎,能够渲染大规模的地理数据集,支持高精度的地球模型和动态数据可视化。以下是一个Cesium的详细教程,分为多个章节。
3D模型在线预览提供多种低代码平台3D模型在线预览解决方案,实现了将多种3D模型格式无缝集成到低代码业务表单中。这意味着用户可以在不离开低代码平台的情况下,直接查看和操作3D模型,极大地提升了数据可视化的效果和用户交互体验。
地形图层 TerrainProvider
支持渐进流式加载和渲染全球高精度地形,并且包含海、湖、河等水面效果。相对2D地图,山峰、山谷等其他地形特征的更适宜在这种3D地球中展示。
地形数据集是巨大的,通常都是GB或者TB级别。在普通3D引擎中,使用底层图形API去高效实现地形数据的可视化需要做很多事情。幸好Cesium已经完成了这个体力活,而我们只需要写几行代码。主要是修改viewer.terrainProvider
属性。
- 使用 Cesium 在线地形
viewer.terrainProvider = Cesium.createWorldTerrain()
- 使用自行发布的服务
viewer.terrainProvider = newCesium.CesiumTerrainProvider(furl:"http://localhost/terrain"}));
- 不使用地形(默认)
viewer.terrainProvider = newCesium.EllipsoidTerrainProvider();
当我们拉近镜头时,CesiumJS 会根据地球上的哪些部分可见以及它们有多远来请求更高分辨率的地形。
地形和图像是分开处理的,任何图像提供程序都可以与任何地形提供程序一起使用。
启用地形照明和水效果
Cesium World Terrain 还包括地形照明数据和水效应所需的海岸线数据。默认情况下,此数据不与地形图块一起发送。启用地形照明 requestVertexNormals
,并启用地球上的照明 globe.enableLighting
。
水效果以类似的方式启用,启用水效果requestWaterMask
:
可以通过更改用于创建波浪的法线贴图来自定义水效果 globe.oceanNormalMapUrl
。更改图像提供程序也会影响水的外观,因为水的颜色与底层图像混合。
地形提供者
Cesium 支持多种使用地形提供程序请求地形的方法 。大多数地形提供者使用 HTTP 上的 REST 接口来请求地形图块。地形提供程序因请求的格式和地形数据的组织方式而异。CesiumJS 支持以下地形提供者:
CesiumTerrainProvider
:支持 量化网格 地形图块,针对地形流进行了优化。兼容由 cesium 提供的地形或 [3D 平铺管道])(/3d-tiling-pipeline/terrain/) 的输出。GoogleEarthEnterpriseTerrainProvider
:支持由您的Google Earth Enterprise 服务器生成的高度图地形 。VRTheWorldTerrainProvider
: 支持从VT MAK VR-TheWorld Server请求的高度图地形图块 。EllipsoidTerrainProvider
:按程序创建椭圆体的表面。这缺乏地形的真实外观,但不会从服务器请求数据(默认地形)。
如果服务器不支持跨源资源共享 (CORS),地形提供程序的构造类似于图像提供程序,并且通常包括地形服务器的 url 和可选代理 。
常用坐标系
- 屏幕坐标(像素值)
- 笛卡尔平面坐标
new Cesium.Cartesian2(x, y)
- 笛卡尔空间直角坐标
new Cesium.Cartesian3(x, y, z)
- 地理坐标(默认为弧度值)
new Cesium.Cartographic(longitude, latitude, heigh)
坐标变换
- 获取鼠标单击后在屏幕中的坐标
- 屏幕坐标 转换为 笛卡尔空间直角坐标
- 笛卡尔空间直角坐标 转换为 屏幕坐标
- 笛卡尔空间直角坐标 转换为 地理坐标(弧度制)
- 地理坐标(弧度制) 转换为 笛卡尔空间直角坐标
- 笛卡尔空间直角坐标 转换为 地理坐标(经纬度)
- 度数与弧度互转
- 地理坐标(经纬度)转换为 笛卡尔空间直角坐标
cesium教程 - 索引