cesium公尺轉換經緯度 Cesium座標轉換

2021-10-13 01:49:59 字數 1905 閱讀 7488

笛卡爾空間座標的原點就是橢球的中心。

在實際應用中用的最多的操作就是(lng, lat, alt)<=>(x, y, z)之間的相互轉換,cesiumjs為我們提供了這些轉換

var ellipsoid = viewer.scene.globe.ellipsoid;

var coord_wgs84 = cesium.cartographic.fromdegrees(lng, lat, alt);//單位:度,度,公尺var coord_xyz = ellipsoid.cartographictocartesian(coord_wgs84);

console.log('x=' + coord_xyz.x + ',y=' + coord_xyz.y + ',z=' + coord_xyz.z);//單位:公尺,公尺,公尺

var xyz = new cesium.cartesian3(x, y, z);

var wgs84 = ellipsoid.cartesiantocartographic(xyz);

console.log('lng=' + cesium.math.todegrees(wgs84.longitude) + ',lat=' + cesium.math.todegrees(wgs84.latitude) + ',alt=' + wgs84.height);

需要注意cesium內部的角度單位是弧度,因此輸入計算或輸出顯示時需要轉換。

轉換到笛卡爾座標系後就能運用計算機圖形學中的仿射變換知識進行空間位置變換如平移旋轉縮放。cesiumjs為我們提供了很有用的變換工具類,cesium.cartesian3(相當於point3d)cesium.matrix3(3x3矩陣,用於描述旋轉變換)cesium.matrix4(4x4矩陣,用於描述旋轉加平移變換),cesium.quaternion(四元數,用於描述圍繞某個向量旋轉一定角度的變換)。下面舉個例子:

乙個區域性座標為p1(x,y,z)的點,將它的區域性座標原點放置到loc(lng,lat,alt)上,區域性座標的z軸垂直於地表,區域性座標的y軸指向正北,並圍繞這個z軸旋轉d度,求此時p1(x,y,z)變換成全域性座標笛卡爾坐p2(x1,y1,z1)是多少?

var rotate = cesium.math.toradians(d);//轉成弧度var quat = cesium.quaternion.fromaxisangle(cesium.cartesian3.unit_z, rotate); //quat為圍繞這個z軸旋轉d度的四元數var rot_mat3 = cesium.matrix3.fromquaternion(quat);//rot_mat3為根據四元數求得的旋轉矩陣var v = new cesium.cartesian3(x, y, z);//p1的區域性座標var m = cesium.matrix4.fromrotationtranslation(rot_mat3, cesium.cartesian3.zero);m2為旋轉加平移的4x4變換矩陣,這裡平移為(0,0,0),故填個cesium.cartesian3.zero

m = cesium.matrix4.multiplybytranslation(m, v);//m = m x vvar cart3 = ellipsoid.cartographictocartesian(cesium.cartographic.fromdegrees(lng, lat, alt)); //得到區域性座標原點的全域性座標var m1 = cesium.transforms.eastnorthuptofixedframe(cart3);//m1為區域性座標的z軸垂直於地表,區域性座標的y軸指向正北的4x4變換矩陣

m = cesium.matrix4.multiplytransformation(m, m1);//m = m x m1var p2 = cesium.matrix4.gettranslation(m);//根據最終變換矩陣m得到p2console.log('x=' + p2.x + ',y=' + p2.y + ',z=' + p2.z )

公尺轉經緯度 經緯度換算公尺 經緯度精度換算公尺數

經度113度55分24秒。緯度22度29分3秒。經緯度的距離都是一度 111公里。一公里 1000公尺,經緯度分度 分 秒都是60進製。記憶中好象是每一度是1852公尺,也就是一海浬.那麼既然知道了一度有多長,你也知道度分秒的換算關係,分秒的長度就很好算了可以自己算的嘛,用地球周長除以360就是.j...

經緯度座標轉換

經緯度與xy座標轉換工具類 public class latlngxyzconverthelper xy轉經緯度 需要轉換的x座標 需要轉換的y座標 地圖級別 轉換後的經度 轉換後的緯度 public static void tiletolatlng double tile x,double til...

經緯度格式轉換

public float dufenmiaotodu float d,float f,float m public float dutodufen fen float d public float fentofenmiao miao float f float 有效數字位數 6 double 有效數...