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 常见坐标系及坐标转换(工具篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: csdn编辑器公式中插入空格
- 下一篇: NLPIR ICTCLAS2015分词系