首页 > 编程知识 正文

globalmap大地坐标转经纬度坐标,大地坐标转换经纬公式

时间:2023-05-03 17:04:48 阅读:249276 作者:85

// 坐标系的转换var pi_180 = Math.PI / 180;var _180_pi = 180 / Math.PI;var projectionTypes = {};projectionTypes.bj54 = { a: 6378245,//长半轴 e2: 0.006693421622966//第一偏心率平方};projectionTypes.wgs84 = { a: 6378137,//长半轴 e2: 0.00669437999013//第一偏心率平方};module.exports = { // 7坐标系统转换方法 // sourceType:源投影类型 targetType:目标投影类型 params: 7参数 blh:源大地坐标 coordinateTransfUse7params(sourceType, targetType, params, blh) { sourceType = sourceType.toLowerCase(); targetType = targetType.toLowerCase(); var XYZ1 = _BLH2XYZ(sourceType, blh); var XYZ2 = _transXYZBy7params(XYZ1, params); var blh2 = _XYZ2BLH(targetType, XYZ2); console.log(blh2); }, _BLH2XYZ(projectionType, blhObj) { //将大地坐标喜欢换为空间直角坐标系 var e2 = projectionTypes[projectionType].e2; //第一偏心率平方值 var a = projectionTypes[projectionType].a; //长半轴 var N = a / Math.sqrt(1 - e2 * Math.sin(blhObj.b * pi_180) * Math.sin(blhObj.b * pi_180)); var X = (N + blhObj.h) * Math.cos(blhObj.b * pi_180) * Math.cos(blhObj.l * pi_180); var Y = (N + blhObj.h) * Math.cos(blhObj.b * pi_180) * Math.sin(blhObj.l * pi_180); var Z = [N * (1 - e2) + blhObj.h] * Math.sin(blhObj.b * pi_180); var resultObj = {}; resultObj.X = X; resultObj.Y = Y; resultObj.Z = Z; return resultObj; }, _transXYZBy7params(xyz0, params) { //根据7参数对空间直角坐标系进行运算 var x0 = xyz0.X; var y0 = xyz0.Y; var z0 = xyz0.Z; var dx = params.dx; var dy = params.dy; var dz = params.dz; var rx = params.rx; var ry = params.ry; var rz = params.rz; var m = params.m; var x1 = dx + (1 + m) * x0 + Math.sin(rz / 60 / 60 * pi_180) * y0 - Math.sin(ry / 60 / 60 * pi_180) * z0; var y1 = dy + (1 + m) * y0 - Math.sin(rz / 60 / 60 * pi_180) * x0 + Math.sin(rx / 60 / 60 * pi_180) * z0; var z1 = dz + (1 + m) * z0 + Math.sin(ry / 60 / 60 * pi_180) * x0 - Math.sin(rx / 60 / 60 * pi_180) * y0; var resultObj = {}; resultObj.X = x1; resultObj.Y = y1; resultObj.Z = z1; return resultObj; }, _XYZ2BLH(projectionType, xyz1) { var a = projectionTypes[projectionType].a; var e2 = projectionTypes[projectionType].e2; //第一偏心率平方值 bj54 // console.log('哈哈哈哈1-----',xyz1.X,'----', xyz1.Y, '----', xyz1.Z); var X = xyz1.X; var Y = xyz1.Y; var Z = xyz1.Z; var L if(X >= 0){ L = Math.atan(Y/X) * _180_pi; } else { L = Math.atan(Y/X) * _180_pi; if(L >= 0){ L = L - 180; } else { L = L + 180; } } // console.log('哈哈哈哈2-----', L); var B = Math.atan(Z / Math.sqrt(X * X + Y * Y)); while (true) { //迭代计算 var N = a / Math.sqrt(1 - e2 * Math.sin(B) * Math.sin(B)); var tempB = Math.atan((N * e2 * Math.sin(B) + Z) / Math.sqrt(X * X + Y * Y)); B = Math.atan((Z + N * e2 * Math.sin(tempB)) / Math.sqrt(X * X + Y * Y)); if (tempB == B) { break; } } var H = Z / Math.sin(B) - N * (1 - e2); B = B * _180_pi; var resultObj = {}; resultObj.L = L; resultObj.B = B; resultObj.H = H; // if (resultObj.B < 0) { // resultObj.B = resultObj.B + 180; // } // if (resultObj.L < 0) { // resultObj.L = resultObj.L + 180; // } // console.log('哈哈哈哈3-----',resultObj.L,'----', resultObj.B) return resultObj; }}

 

k8s部署Rancherssh隧道

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。