cesium米转换经纬度_cesium 常见坐标系及坐标转换(工具篇)
/*
* @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 常见坐标系及坐标转换(工具篇)相关推荐
- cesium米转换经纬度_Cesium 坐标系转换
cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系(世界坐标).我们平时常用的以经纬度来指明一个地点就是用的WGS84坐标,笛卡尔空间坐标系常用来做一些空间位置变换如平移旋转缩放等等 ...
- cesium米转换经纬度_cesium 笛卡尔坐标(单位:米) 与 经纬度(单位:弧度/度) 之间的转换。...
this.model.readyPromise.then(function (tileset) { //记录模型原始的中心点 var boundingSphere = tileset.bounding ...
- dmp格式怎么转换_如何生成转储(dmp)文件--工具篇
转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种借助第三方工具生成转储文件的方法. 1. 任 ...
- 西安80转换成北京独立计算机,关于坐标转换及坐标系(大地坐标、平面坐标、投影、北京54、西安80、WGS84)的一些理解...
各种坐标系让人头晕,坐标转换让人头疼.今天我们来详细讲解下关于坐标转换及坐标系的理解,全是经验之谈希望对你有所帮助,让你对坐标问题不再头疼. 坐标转换 每个项目收集到的资料并不一定都是一致的,如坐标类 ...
- ArcGIS坐标系篇之几种常见坐标系的相互转换(二)
几种常见坐标系的相互转换 坐标系的转换是我们在地理数据的使用过程中经常会遇到的问题,像大家经常提到的54转8080转2000WGS84转2000等等,以及ArcGIS经常提到的地理坐标系转投影坐标系. ...
- 百度转换经纬度为地址
1 /** 2 * 通过百度转换经纬度为地址信息 3 * 4 * @param longitude 经度 5 * @param latitude 纬度 6 * @param coordtype 坐标体 ...
- cesium 获取当前经纬度和视角还有当前level层级
cesium 获取当前经纬度和视角还有当前level层级 // 跟随鼠标获取经纬度和视角高度var longitude_show=document.getElementById('longitude_ ...
- 批量转换经纬度的网页实现方法
第一步:注册免费域名 利用的虚拟机和域名来自于该网站,可以进行注册申请. 第二步:代码修改 原始代码部分省略,可以从最基本的hello world网页开始学习. 利用免费空间发布网站,发布页面上会自动 ...
- 计算机80坐标转换经纬度,西安80坐标系(高斯投影)转经纬度(示例代码)
如何将下载的影像变换为西安80坐标? 注意:投影转换成80坐标系需要下载无偏移卫星图像进行转换,有偏移的转换将导致转换后的卫星图像扭曲,坐标错误,无法配准. 第一步:选择无偏移地图源,下载你所需要的卫 ...
最新文章
- RelativeLayout(相对布局)的分析
- 自己写 localtime 函数(含完整注释,代码)转载
- linux创建更改目录,如何使用Linux中的单个命令创建新目录并更改它 | MOS86
- python unicodedecodeerror_如何解决python UnicodeDecodeError问题?
- instrumentation模拟很多activity的操作
- 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
- magento effects.js jquery.lazyload.js 冲突
- 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
- 前端css实现气泡框
- 免费从麦田影视下载英文字幕电影方法图解#
- 小米8绑定账号和设备验证失败_不要浪费小米10的双扬声器!杜比全景音刷入教程分享...
- 900年历史的万安桥失火!传统古建筑又该如何保护?
- 阿里巴巴巨震,堪比地震
- python 爬取12306数据
- 操作系统之大白菜U盘重装系统
- 深度学习:长短期记忆模型LSTM
- 对流氓软件应群起攻之
- 武汉计算机专业排名2015,2015武汉大学专业排名一览
- 选择1KG轻簿的笔记本
- js拼接json格式数据