初学者刚开始了解三维可视化开发时,都会遇到各种坐标的概念,同时也需要在各个坐标系之间相互转换数据,导致对各个概念混淆,分不清楚到底各个坐标系是什么关系,下面我就以我自己对webgis相关了解,结合Three.js和cesium进行三维开发遇到的坐标系,分别罗列解释下各个坐标系:
gis行业常见坐标系:
【WGS84地理坐标系】
即地球坐标系,是为GPS全球定位系统使用而建立的坐标系,坐标原点在椭球的质心,我们常说的GPS定位,定位的坐标一般指这个坐标的经纬度。google地图使用的是wgs84-
【墨卡托坐标系】
又称麦卡托投影、正轴等角圆柱投影,是一种等角的圆柱形地图投影法
【火星坐标系】
即GCJ02,中国国家测绘局制定的地理坐标系统,是由WGS84加密后得到的坐标系。目前高德地图就是使用的这个坐标系。所以在用高德地图api进行相关开发时,里面的坐标系都是火星坐标系,所以若是其他坐标系的数据,需要先转成火星坐标系。只在国内使用(国家特色要求产物)。【百度坐标系】
即BD09,是在GCJ02坐标系基础上再次加密形成的,在用百度地图api进行相关开发时,若是其他坐标系的数据,也需要先转换成百度坐标系。只在国内使用(国家特色要求产物)。【2000国家大地坐标系】
即 CGCS2000,中国自己搞的一套国家大地坐标系,国家测绘地理信息局将从2018年起停止提供非2000国家大地坐标系下相关数据,都改成2000。国内测绘等行业主推此坐标系
三维开发时常用坐标系
- 【屏幕坐标系】
即二维笛卡尔平面坐标,我们通过鼠标点击浏览器页面直接获取的坐标就是屏幕坐标了,单位是像素值。左边原点在左上角,向右为x轴正方向,向下为y轴正方向。前端可通过鼠标点击事件直接获取x, y的值。 - 【世界坐标系】
即笛卡尔空间直角坐标,我们在cesium和ThreeJs开发时空间立体的都是以此坐标系开发,通过x,y,z三个参数确定一个位置,x轴发现朝右,y轴方向超上,z轴方向指向屏幕前的你。 - 【WGS84弧度坐标系】
在cesium开发中,wgs84经纬度坐标没有以度数存在的(我们一般认知了解的都是度数),都是以弧度形式存在。所以开发过程中,涉及到经纬度的,都需要转换成弧度形式的经纬度。【度数转弧度】
π/180 * 度数
cesium提供方法:Cesium.CesiumMath.toRadians(degrees)
【弧度转度数】
180/π * 弧度
cesium提供方法:Cesium.CesiumMath.toDegrees(radians