Cesium坐标系介绍
首先介绍坐标系,有关坐标系转换代码在下面

1.笛卡尔坐标系介绍(世界坐标系)

Cartesian3:笛卡尔空间直角坐标系
new Cesium.Cartesian3(x, y, z)


可以看作,以椭球中心为原点的空间直角坐标系中的一个点的坐标。

2.经纬度

地理坐标系,坐标原点在椭球的质心。

经度:参考椭球面上某点的大地子午面与本初子午面间的两面角。东正西负。

纬度 :参考椭球面上某点的法线与赤道平面的夹角。北正南负。

Cesuim中没有具体的经纬度对象,要得到经纬度首先需要计算为弧度,再进行转换


3.弧度

Cartographicnew Cesium.Cartographic(longitude, latitude, height)

这里的参数也叫做,longitude,latitude,即经度和纬度。

但是是用弧度表示的经纬度,经纬度其实就是角度,可以看上面的解释。弧度即角度对应弧长是半径的倍数。

角度转弧度 π/180×角度
弧度变角度 180/π×弧度


几种转换

  1. 经纬度转换为世界坐标

第一种方式:直接转换:

Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result)

longitude:经度

latitude:纬度

height:高度

ellipsoid:椭球体:

第二种方式:先转换成弧度再转换

var ellipsoid=viewer.scene.globe.ellipsoid;
var cartographic=Cesium.Cartographic.fromDegrees(lng,lat,alt);
var cartesian3=ellipsoid.cartographicToCartesian(cartographic);

以上方式是借助了ellipsoid对象的方法。

  1. 世界坐标转换为经纬度
var ellipsoid=viewer.scene.globe.ellipsoid;
var cartesian3=new Cesium.cartesian3(x,y,z);
var cartographic=ellipsoid.cartesianToCartographic(cartesian3);
var lat=Cesium.Math.toDegrees(cartograhphic.latitude);
var lng=Cesium.Math.toDegrees(cartograhpinc.longitude);
var alt=cartographic.height;

同理,得到弧度还可以用

Cartographic.fromCartesian

3.弧度和经纬度

经纬度转弧度:

Cesium.CesiumMath.toRadians(degrees)

弧度转经纬度:

Cesium.CesiumMath.toDegrees(radians)
  1. 屏幕坐标和世界坐标相互转换

屏幕转世界坐标:

    var pick1= new Cesium.Cartesian2(0,0);var cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(pick1),viewer.scene);

注意这里屏幕坐标一定要在球上,否则生成出的cartesian对象是undefined

世界坐标转屏幕坐标

Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, Cartesian3);

结果是Cartesian2对象,取出X,Y即为屏幕坐标。

火星坐标,84坐标,百度地图坐标相互转换

//定义一些常量
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
var PI = 3.1415926535897932384626;
var a = 6378245.0;
var ee = 0.00669342162296594323;/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* @param bd_lon* @param bd_lat* @returns {*[]}*/
function bd09togcj02(bd_lon, bd_lat) {var x_pi = 3.14159265358979324 * 3000.0 / 180.0;var x = bd_lon - 0.0065;var y = bd_lat - 0.006;var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);var gg_lng = z * Math.cos(theta);var gg_lat = z * Math.sin(theta);return [gg_lng, gg_lat]
}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换* 即谷歌、高德 转 百度* @param lng* @param lat* @returns {*[]}*/
function gcj02tobd09(lng, lat) {var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);var bd_lng = z * Math.cos(theta) + 0.0065;var bd_lat = z * Math.sin(theta) + 0.006;return [bd_lng, bd_lat]
}/*** WGS84转GCj02* @param lng* @param lat* @returns {*[]}*/
function wgs84togcj02(lng, lat) {if (out_of_china(lng, lat)) {return [lng, lat]}else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);var mglat = lat + dlat;var mglng = lng + dlng;return [mglng, mglat]}
}/*** GCJ02 转换为 WGS84* @param lng* @param lat* @returns {*[]}*/
function gcj02towgs84(lng, lat) {if (out_of_china(lng, lat)) {return [lng, lat]}else {var dlat = transformlat(lng - 105.0, lat - 35.0);var dlng = transformlng(lng - 105.0, lat - 35.0);var radlat = lat / 180.0 * PI;var magic = Math.sin(radlat);magic = 1 - ee * magic * magic;var sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);mglat = lat + dlat;mglng = lng + dlng;return [lng * 2 - mglng, lat * 2 - mglat]}
}function transformlat(lng, lat) {var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;return ret
}function transformlng(lng, lat) {var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;return ret
}/*** 判断是否在国内,不在国内则不做偏移* @param lng* @param lat* @returns {boolean}*/
function out_of_china(lng, lat) {return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
}

Cesium坐标系介绍相关推荐

  1. 【Cesium】Cesium基本介绍

    Cesium基本介绍 初始化地球 const viewer = new Cesium.Viewer('') Viewer 查看器类 定义的同时需要设定基础部件.图层等的初始化状态 new Cesium ...

  2. Cocos2d-x坐标系介绍

    Cocos2d-x坐标系介绍 在图形图像和游戏应用开发中坐标系是非常重要的,我们在Android和iOS等平台应用开发的时候使用的二维坐标系它的原点是在左上角的.而在Cocos2d-x坐标系中它原点是 ...

  3. Apollo进阶课程⑭ | Apollo自动定位技术——三维几何变换和坐标系介绍

    目录 1.三维几何变换---旋转 2.三维几何变换----平移 2.1刚体的位置和朝向 3. 坐标系 3.1 ECI地心惯性坐标系 3.2 ECFF地心地固坐标系 3.3当地水平坐标系 3.4 UTM ...

  4. fieldtrip学习——1.坐标系介绍(ctf坐标系和acpc坐标系简介)

    -------------------------------------滴,菜鸟要从这里开始学习飞行啦!-------------------------------------------- 今天 ...

  5. ABB机器人:工件坐标系介绍以及标定操作与使用方法

    目录 工件坐标系介绍 机器人工作站创建 工件坐标系标定方法 工件坐标系手动测试 工件坐标系应用 仿真运行 工件坐标系介绍 工件坐标系对应工件:它定义工件相对于大地坐标系(或其它坐标系)的位置. 工件坐 ...

  6. 三维坐标系介绍与转换

    转载自:http://support.supermap.com.cn/DataWarehouse/WebDocHelp/OnlineHelp/Flash3D/G_ProjectDocumentatio ...

  7. 发那科机器人xyz的方向_发那科机器人应用-坐标系介绍(1)

    发那科机器人应用-坐标系介绍(1) 坐标系简介 坐标系是为了确定机器人位置姿态, 而在空间上给予定义的位置指标 坐标系有:工具,用户,世界,关节,手动 关节坐标系是设定在机器人关节中的坐标系,关节坐标 ...

  8. GIS、ArcGIS 、WebGIS及Cesium的介绍

    GIS 地理信息系统 (GIS) 是一个用于描绘地球和其他地理要素并突出其特征,从而显示和分析经空间配准的信息的系统.此项工作主要借助地图来执行. GIS 的目的在于创建.共享和应用基于地图的有用信息 ...

  9. 数字图像处理:视觉系统中的坐标系介绍

    参考: 图像坐标系.摄像机坐标系与世界坐标系 四个坐标系简介和转换 世界坐标.相机坐标.图像坐标.像素坐标的原理.关系,并用matlab仿真 1.像素坐标系(Pixel coordinate syst ...

最新文章

  1. 过滤掉空格( /r/n) 和html标签
  2. PPT如何让多对象排列整齐
  3. mappedbytebuffer_Java NIO Buffer【MappedByteBuffer】概述与FileChannel的联系
  4. linux终端贪吃蛇,分享|nSnake: 在Linux的终端上玩经典的贪食蛇游戏
  5. [原创]二维数组的动态分配及参数传递
  6. 现代软件工程——第一周博客作业
  7. 安卓饼状图设置软件_android开源图表库MPAndroidChart(曲线图、直方图、饼状图)...
  8. Java毕设项目电商后台管理系统计算机(附源码+系统+数据库+LW)
  9. Spring核心之一:Spring的配置文件是干什么的
  10. PostgreSql对比MySQL优势
  11. 《实变函数简明教程》,P63,可测集上的连续函数一定可测
  12. 【iOS】—— weak的基本原理
  13. 基于深度学习的语义分割
  14. 天下大事必作于细,天下难事必作于易
  15. python基础语法Day11
  16. 2.1 linux 存储结构和硬盘划分
  17. 技术分享 | ClickHouse StarRocks 使用经验分享
  18. 2021考研肖秀荣大纲解读及复习建议
  19. U-Net: Convolutional Networks for Biomedical Image Segmentation论文翻译
  20. JavaScript 10进制转换为类似‘0x00d5’格式的16进制

热门文章

  1. SOA面向服务的分布式架构详解
  2. C919背后的中国IT力量
  3. 如何有效地防止注册机
  4. 如何用bat语句锁定计算机,如何用bat命令重启电脑或关机
  5. python小记(五):python如何提取字符串中的数字或其他
  6. 帮忙设计一个数字电子时钟的课程设计
  7. AcWing-822. 走方格(排列组合)
  8. Java通过DBCP连接池方法实现JDBC代码案例
  9. java提供OTP服务
  10. 2022年全国各省市CMMI资质认证补贴政策汇总,太诱人了