
功能:在cesium三维球上加载terrain高程数据,并获取鼠标单击处的经度、纬度、高程。
参考: >
常用来描述屏幕坐标系,比如鼠标在电脑屏幕上的点击位置,返回的就是Cartesian2具体的是鼠标点击位置距离canvas左上角的像素值。屏幕左上角为原点(0, 0),水平方向为X轴,向右为正,垂直方向为Y轴,向下为正。
常用方法:
笛卡尔空间坐标的原点就是椭球的中心,我们在计算机上进行绘图时,不方便使用经纬度直接进行绘图,一般会将坐标系转换为笛卡尔坐标系,使用计算机图形学中的知识进行绘图。
new CesiumCartesian3(x, y, z)
返回3D笛卡尔点
类型是Number哦!
类型是Number哦!
类型是Number哦!
WGS84坐标系(World Geodetic System 1984)是为GPS全球定位系统使用而建立的坐标系统,坐标原点为地球质心,其地心空间直角坐标系的Z轴指向BIH (国际时间服务机构)1984O定义的协议地球极(CTP)方向,X轴指向BIH 19840的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。我们平常手机上的指南针显示的经纬度就是这个坐标系下当前的坐标,经度范围[-180,180],纬度范围[-90,90]。
BUT!
BUUUUUT!!!
Cesium目前支持两种坐标系WGS84和WebMercator,但是没有实际的对象来描述WGS84坐标,都是 以弧度的方式,即Cartographic类来运用的
new CesiumCartographic ( longitude , latitude , height )
由经度,纬度和高度定义的位置。
单位是弧度哦!
单位是弧度哦!
单位是弧度哦!
只写一下自己用得多的
以后要是有用到新的再说
简记版本:弧度就是几分之 ,角度就是多少多少度, Mathxxx(x)里的x通常需要是弧度!!!
角转弧: CesiumCesiumMathtoRadians(degrees)
弧转角: CesiumCesiumMathtoDegrees(radians)
通常是对获取的坐标进行计算的时候用,比如同文件夹下的测距测面里,测距测面都是首先要把cartesian3形式的坐标转换成Cartographic形式拿到经纬高度,然后才好计算
CesiumCartographicfromCartesian(position)
通常是算好一个需要的点以后要添加实体的时候用,比如测距的时候添加线段中点
CesiumEllipsoidWGS84cartographicToCartesian(cartographicPosition)
思路:先从笛卡尔坐标转到弧度坐标,再从弧转角
最近几日由于工作中需要把全景图加载到三维场景中,之前网上搜索过,做过的都是结合其他框架来实现,如PhotoSphereViewer。但是当我们需要在Cesium做的项目中,来做数据显示增强的时候(如:点云和全景图叠合)就显得力不从心了,毕竟PhotoSphereViewer是基于threejs来实现的,需要一起来显示的时候就需要控制Cesium的相机和threejs的相机。因此为了更加有效的实现Cesium中场景与全景图完美叠合,就需要Cesium加载全景图。可能我说的叠合有点抽象,那么我用一张图来解释一下。
和点云数据叠合有个好处就是点云数据拉近看的时候,点云比较稀疏看不清形状,这个时候结合全景图,就能更加清晰的呈现出模型本身。
那么如何实现cesium中加载全景图呢?其实很简单,总结为如下几步:
1、使用EllipsoidGeometry绘制一个球
2、给这个球贴上纹理,由于我们贴的时候一般都贴到球的表面,但是我们看的时候视角是从球里面往外面看的,所以需要对纹理做一个反转
3、固定相机位置为球的中心点,这样就可以绕着这个点往四周看了
我这里把使用的贴纹理的shader贴出来供大家参考:
最后附一张叠合的效果图:
第一篇CesiumJS技术日记,不管技术难不难,认真归纳是个好习惯。本文绕弯太多,要直接绘制视锥的请移步 这里 。
最近在研究视域分析,思路:使用ShadowMapjs接口开放的阴影绘制功能,指定点光源的相关参数。然而在调试的过程中发现并没有那么简单,生成ShadowMap对象时会抛出无法在参数中找到Context对象的异常,这个Context对象在Api文档中并没有提及,这个问题在 >
OBJ模型导入规则:
OBJ模型文件需打包导入,格式为zip。文件包中含有模型、材质、贴图、缩略图文件。
文件包组成(注:模型、贴图、材质、缩略图,需在同级目录)
模型文件:obj格式
贴图文件:png jpg dds tga格式
材质文件:mtl格式
缩略图文件:png格式(文件名须与obj文件一致)
注意事项
1) OBJ模型的每个节点的顶点数量不能超过65000,否则会报错。
2) 模型文件、贴图文件、材质文件、缩略图文件必须以英文名命名。
其他建议
使用3ds Max制作OBJ模型,在导入CamBuilder(模模搭)前建议预先缩小模型尺寸为原尺寸的1/100,以便在 “基于unity3d引擎的CamBuilder”中能按原尺寸显示该模型。关于3ds Max、unity3d两种平台间的尺寸体系差异,若有更多疑问,可自行百度搜索了解。
上传OBJ模型可参考下图网页链接
Cesium开发中,如果想要看到真实感,地形数据(DEM)不可或缺。
首先,地形数据是什么?拿DEM数据来说,DEM数据就是数字高程模型,就是描述每个点位的高程数据而已,没有其他附加信息,更不会包含影像图,单独展示是看不出什么名堂的。DEM数据在ArcGIS中打开只能看到是灰度图。
其次,如何展示呢?地形数据需要结合影像图或者普通瓦片来展示才能看到地球表面的高低起伏状态;结合影像图展示效果最佳。
下面我将从获取DEM数据到最后成功展示到Cesium中,详细描述其中的各个步骤,希望对大家有所帮助。
7运行页面,打开之后,定位到有地形数据的地方。
从正上方俯视,地形数据已经很明显了
按住Ctrl键,旋转地球,从地平线方向看,地形数据更明显,效果更好。
最后再重复一下,地形数据单独是没法展示出来看的,只是一堆高程数据而已。结合影像图来展示,效果最佳。
注意:最好把项目服务和高程数据服务部署在同一个服务器和端口下,避免跨域。
本文主要参考了 >
以上就是关于cesium从terrain数据中获取地表高程全部的内容,包括:cesium从terrain数据中获取地表高程、build cesium offline terrain、个人笔记|三维GIS开发-cesium坐标系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)