/*

* @Description: 坐标转换工具,下面的坐标转换默认都是基于WGS84 椭球体

*/

class Degrees {

constructor(longitude, latitude, height = 0) {

this.longitude = longitude;

this.latitude = latitude;

this.height = height;

}

}

Cesium.Degrees = Degrees;//不建议这样直接修改Cesium原始对象

class Tramsform {

/**

* @description: 弧度转度

* @param {Number} value

* @return {Number}

*/

toDegrees(value) {

return Cesium.Math.toDegrees(value)

}

/**

* @description: 度转弧度

*/

toRadians(value) {

return Cesium.Math.toRadians(value)

}

/**

* @description: 经纬度(度)转世界坐标

* @param {Degrees} degrees.longitude 经度 degrees.latitude 纬度 degrees.height高度

* @return {Cartesian3} 世界坐标

*/

degreesToCartesian(degrees) {

return Cesium.Cartesian3.fromDegrees(degrees.longitude, degrees.latitude, degrees.height)

}

/*

* @description: 世界坐标转 经纬度(度)

* @param {Cartesian3} cartesian 世界坐标

* @return {Cartographic}  返回转换之后的经纬度

*/

degreesFromCartesian(cartesian) {

let cartographic = this.cartographicFromCartesian(cartesian);

return this.degreesFromCartographic(cartographic);

}

/*

* @description: 经纬度(度)转经纬度(弧度)

* @param {*} degrees

* @return {*}

*/

degreesToCartographic(degrees) {

degrees.longitude = this.toRadians(degrees.longitude);

degrees.latitude = this.toRadians(degrees.latitude);

return degrees;

}

/**

* @description: 经纬度(弧度)转经纬度(度)

* @param {Cartographic} cartographic

* @return {*} 返回经纬度(度)

*/

degreesFromCartographic(cartographic) {

cartographic.longitude = this.toDegrees(cartographic.longitude);

cartographic.latitude = this.toDegrees(cartographic.latitude);

return cartographic;

}

/**

* @description: 经纬度(度)坐标转web墨卡托坐标

* @param {Cartographic} degrees

* @return {Cartesian3} web墨卡托坐标

*/

degreesToWebMercatorProjection(degrees) {

var webMercatorProjection = new Cesium.WebMercatorProjection();

return webMercatorProjection.project(this.degreesToCartesian(degrees))

}

/**

* @description: web墨卡托转经纬度(度)

* @param {Cartesian3} cartesian

* @return {Cartographic} 经纬度(度)坐标

*/

degreesFromWebMercatorProjection(cartesian) {

var webMercatorProjection = new Cesium.WebMercatorProjection();

return this.degreesFromCartographic(webMercatorProjection.unproject(cartesian))

}

/**

* @description: 弧度坐标转世界坐标

* @param {Cartographic}   cartographic.longitude 经度

* @param {Cartographic}   cartographic.latitude 纬度

* @param {Cartographic}   cartographic.height 高度

* @return {Cartesian3} 世界坐标

*/

cartographicToCartesian(cartographic) {

return Cesium.Cartographic.toCartesian(cartographic)

}

/**

* @description: 世界坐标转经纬度弧度

* @param {Cartesian3} cartesian 世界坐标

* @return {Cartographic}  返回转换之后的经纬度弧度坐标

*/

cartographicFromCartesian(cartesian) {

return Cesium.Cartographic.fromCartesian(cartesian)

}

/**

* @description: 经纬度度转经纬度弧度

* @param {Degrees} degrees.longitude 经度 degrees.latitude 纬度 degrees.height高度

* @return {*}

*/

cartographicFromDegrees(degrees) {

return this.degreesToCartographic(degrees)

}

/**

* @description: 经纬度(弧度)转经纬度(度)

* @param {Cartographic} cartographic

* @return {*} 返回经纬度(度)

*/

cartographicToDegrees(cartographic) {

return this.degreesFromCartographic(cartographic)

}

/**

* @description: 经纬度(弧度)坐标转web墨卡托坐标

* @param {Cartographic} cartographic

* @return {Cartesian3} web墨卡托坐标

*/

cartographicToWebMercatorProjection(cartographic) {

var webMercatorProjection = new Cesium.WebMercatorProjection();

return webMercatorProjection.project(cartographic)

}

/**

* @description: web墨卡托转经纬度(弧度)

* @param {Cartesian3} cartesian

* @return {Cartographic} 弧度坐标

*/

cartographicFromWebMercatorProjection(cartesian) {

var webMercatorProjection = new Cesium.WebMercatorProjection();

return webMercatorProjection.unproject(cartesian)

}

/*

* @description: 世界坐标转 经纬度(度)

* @param {Cartesian3} cartesian 世界坐标

* @return {Cartographic}  返回转换之后的经纬度

*/

cartesianToDegrees(cartesian) {

return this.degreesFromCartesian(cartesian)

}

/**

* @description: 经纬度(度)转世界坐标

* @param {Degrees} degrees.longitude 经度 degrees.latitude 纬度 degrees.height高度

* @return {Cartesian3} 世界坐标

*/

cartesianFormDegrees(degrees) {

return this.degreesToCartesian(degrees)

}

/**

* @description: 世界坐标转经纬度(弧度)

* @param {Cartesian3} cartesian 世界坐标

* @return {Cartographic}  返回转换之后的经纬度弧度坐标

*/

cartesianToCartographic(cartesian) {

return this.cartographicFromCartesian(cartesian)

}

/**

* @description: 弧度坐标转世界坐标

* @param {Cartographic}  cartographic.longitude 经度

* @param {Cartographic}  cartographic.latitude 纬度

* @param {Cartographic}  cartographic.height 高度

* @return {Cartesian3} 世界坐标

*/

cartesianFromCartographic(cartographic) {

return this.cartographicToCartesian(cartographic)

}

/**

* @description: 世界坐标坐标转web墨卡托坐标

* @param {Cartographic} degrees

* @return {Cartesian3} web墨卡托坐标

*/

cartesianToWebMercatorProjection(cartesian) {

var webMercatorProjection = new Cesium.WebMercatorProjection();

return webMercatorProjection.project(this.cartesianToCartographic(cartesian))

}

/**

* @description: web墨卡托转世界坐标

* @param {Cartesian3} cartesian

* @return {Cartographic} 世界坐标

*/

cartesianFromWebMercatorProjection(cartesian) {

var webMercatorProjection = new Cesium.WebMercatorProjection();

return this.cartesianFromCartographic(webMercatorProjection.unproject(cartesian))

}

/**

* @description: 世界坐标转屏幕坐标

* @param {Cartesian3} cartesian

* @return {Cartesian2} 屏幕坐标

*/

cartesianToWindowCoordinates(scene, cartesian) {

return Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, cartesian)

}

/**

* @description: 从4*4矩阵中得到平移位置

* @param {Matrix4} mat4 4*4矩阵

* @return {Cartesian3} 返回位置信息

*/

getTranslationFromMatrix4(mat4, result) {

if (!result) result = new Cesium.Cartesian3();

return Cesium.Matrix4.getTranslation(mat4, result)

}

/**

* @description: 返回x,y,z方向的比例尺信息

* @param {Matrix4} mat4 4*4矩阵

* @param {Cartesian3} result 用于储存结果

* @return {Cartesian3} 返回x,y,z方向的比例尺信息

*/

getScaleFromMatrix4(mat4, result) {

if (!result) result = new Cesium.Cartesian3();

return Cesium.Matrix4.getScale(mat4, result)

}

/**

* @description: 将3*3旋转矩阵转换成齐次坐标

* @param {Matrix4} matrix 3*3矩阵

* @param {Quaternion} result 储存结果

* @return {Quaternion} 返回齐次坐标

*/

quaternionFromRotationMatrix(matrix, result) {

return Cesium.Quaternion.fromRotationMatrix(matrix, result)

}

/**

* @description: 将欧拉角转成齐次坐标

* @param {HeadingPitchRoll} headingPitchRoll

* @param {Quaternion} result 储存结果

* @return {Quaternion} 返回齐次坐标

*/

quaternionfromHeadingPitchRoll(headingPitchRoll, result) {

return Cesium.Quaternion.fromHeadingPitchRoll(headingPitchRoll, result)

}

/**

* @description: 将齐次坐标转成欧拉角表示,和quaternionfromHeadingPitchRoll方法互逆

* @param {Quaternion} quaternion 齐次坐标

* @param {HeadingPitchRoll} result  储存结果

* @return {HeadingPitchRoll} 返回欧拉角

*/

headingPitchRollFromQuaternion(quaternion, result) {

return Cesium.HeadingPitchRoll.fromQuaternion(quaternion, result)

}

/**

* @description: 从4*4矩阵中得到欧拉角

* @param {Matrix4} transform 4*4矩阵

* @param {Ellipsoid} ellipsoid 84椭球体

* @param {Transforms.LocalFrameToFixedFrame} fixedFrameTransform 参考系,默认东-北-上参考系

* @param {HeadingPitchRoll} result 储存结果

* @return {HeadingPitchRoll}

*/

fixedFrameToHeadingPitchRoll(transform, ellipsoid, fixedFrameTransform, result) {

return Cesium.Transforms.fixedFrameToHeadingPitchRoll(transform, ellipsoid, fixedFrameTransform, result)

}

/**

* @description: 将欧拉角转成3*3矩阵

* @param {HeadingPitchRoll} headingPitchRoll

* @param {Matrix3} result 储存结果

* @return {Matrix3} 返回一个3*3矩阵

*/

matrixFromHeadingPitchRoll(headingPitchRoll, result) {

return Cesium.Matrix3.fromHeadingPitchRoll(headingPitchRoll, result)

}

/**

* @description: 根据东-北-上方向参考系生成4*4矩阵,已知道地球上的某个位置,可以根据这个方法生成一个4*4矩阵

* @param {Cartesian3} origin 原点坐标

* @param {Ellipsoid} ellipsoid 84椭球体

* @param {Matrix4} result 储存结果

* @return {Matrix4} 返回4*4矩阵

*/

eastNorthUpToFixedFrame(origin, ellipsoid, result) {

return Cesium.Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result)

}

/**

* @description: 根据原点和欧拉角生成4*4矩阵

* @param {Cartesian3} origin 原点坐标

* @param {HeadingPitchRoll} headingPitchRoll 欧拉角

* @param {Ellipsoid} ellipsoid

* @param {Transforms.LocalFrameToFixedFrame} fixedFrameTransform 参考系,默认为东-北-上参考系

* @param {Matrix4} result 储存结果

* @return {Matrix4} 返回4*4矩阵

*/

headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result) {

return Cesium.Transforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransform, result)

}

}

cesium米转换经纬度_cesium 常见坐标系及坐标转换(工具篇)相关推荐

  1. cesium米转换经纬度_Cesium 坐标系转换

    cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系(世界坐标).我们平时常用的以经纬度来指明一个地点就是用的WGS84坐标,笛卡尔空间坐标系常用来做一些空间位置变换如平移旋转缩放等等 ...

  2. cesium米转换经纬度_cesium 笛卡尔坐标(单位:米) 与 经纬度(单位:弧度/度) 之间的转换。...

    this.model.readyPromise.then(function (tileset) { //记录模型原始的中心点 var boundingSphere = tileset.bounding ...

  3. dmp格式怎么转换_如何生成转储(dmp)文件--工具篇

    转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种借助第三方工具生成转储文件的方法. 1. 任 ...

  4. 西安80转换成北京独立计算机,关于坐标转换及坐标系(大地坐标、平面坐标、投影、北京54、西安80、WGS84)的一些理解...

    各种坐标系让人头晕,坐标转换让人头疼.今天我们来详细讲解下关于坐标转换及坐标系的理解,全是经验之谈希望对你有所帮助,让你对坐标问题不再头疼. 坐标转换 每个项目收集到的资料并不一定都是一致的,如坐标类 ...

  5. ArcGIS坐标系篇之几种常见坐标系的相互转换(二)

    几种常见坐标系的相互转换 坐标系的转换是我们在地理数据的使用过程中经常会遇到的问题,像大家经常提到的54转8080转2000WGS84转2000等等,以及ArcGIS经常提到的地理坐标系转投影坐标系. ...

  6. 百度转换经纬度为地址

    1 /** 2 * 通过百度转换经纬度为地址信息 3 * 4 * @param longitude 经度 5 * @param latitude 纬度 6 * @param coordtype 坐标体 ...

  7. cesium 获取当前经纬度和视角还有当前level层级

    cesium 获取当前经纬度和视角还有当前level层级 // 跟随鼠标获取经纬度和视角高度var longitude_show=document.getElementById('longitude_ ...

  8. 批量转换经纬度的网页实现方法

    第一步:注册免费域名 利用的虚拟机和域名来自于该网站,可以进行注册申请. 第二步:代码修改 原始代码部分省略,可以从最基本的hello world网页开始学习. 利用免费空间发布网站,发布页面上会自动 ...

  9. 计算机80坐标转换经纬度,西安80坐标系(高斯投影)转经纬度(示例代码)

    如何将下载的影像变换为西安80坐标? 注意:投影转换成80坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准. 第一步:选择无偏移地图源,下载你所需要的卫 ...

最新文章

  1. RelativeLayout(相对布局)的分析
  2. 自己写 localtime 函数(含完整注释,代码)转载
  3. linux创建更改目录,如何使用Linux中的单个命令创建新目录并更改它 | MOS86
  4. python unicodedecodeerror_如何解决python UnicodeDecodeError问题?
  5. instrumentation模拟很多activity的操作
  6. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  7. magento effects.js jquery.lazyload.js 冲突
  8. 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
  9. 前端css实现气泡框
  10. 免费从麦田影视下载英文字幕电影方法图解#
  11. 小米8绑定账号和设备验证失败_不要浪费小米10的双扬声器!杜比全景音刷入教程分享...
  12. 900年历史的万安桥失火!传统古建筑又该如何保护?
  13. 阿里巴巴巨震,堪比地震
  14. python 爬取12306数据
  15. 操作系统之大白菜U盘重装系统
  16. 深度学习:长短期记忆模型LSTM
  17. 对流氓软件应群起攻之
  18. 武汉计算机专业排名2015,2015武汉大学专业排名一览
  19. 选择1KG轻簿的笔记本
  20. js拼接json格式数据

热门文章

  1. BroadcastReceiver应用详解(转)
  2. apache+php32位平台安装
  3. RichTextBox 改变每行的字体颜色
  4. LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则 .
  5. Ghosts for Tea
  6. 【深度学习】——物体检测细节处理(NMS、样本不均衡、遮挡物体)
  7. 【项目实战】——Python打包正装换底色代码为exe文件(可在其他无Python环境下运行)
  8. numpy——axis
  9. 学习笔记(49):Python实战编程-place布局
  10. C++STL总结笔记(二)——仿函数(函数对象)