// 坐标系的转换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 Lif(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;}
}

js 大地坐标转经纬度相关推荐

  1. C++:高斯坐标,大地坐标转经纬度

    实现CGCS2000大地坐标系XY值转化为对应经纬度信息, 注意输入的XY值与给定的值相反,则参数X为已知的Y,参数Y为已知的X. 得出的结果为 [纬度,经度],不要应用错误. L0参数为中央子午线的 ...

  2. 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...

    转自:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标.百度坐标.WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版 火星坐标 ...

  3. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

  4. 【转】火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...

    原文地址:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地 ...

  5. CAD 坐标转经纬度(Arcgis)

    CAD 坐标转经纬度(Arcgis) 1.CAD坐标识别 工具-坐标信息识别,手动复制输出到excel表,格式大致如下: 2.Arcgis 转换 文件-添加数据-添加XY数据,找到对应的excel表格 ...

  6. java根据经纬度转地址或者根据地址转经纬度

    目录 1.根据经纬度转地址 2.根据地址信息转经纬度 其实本质上还是利用高德地图API进行经纬度和地址的互转. 1.根据经纬度转地址 /*** 根据经纬度转地址* @param points* @re ...

  7. python实现2000投影坐标转经纬度

    引言 常用的WGS84投影坐标转经纬度可用通用的pyproj库来转换,而2000坐标 测试用这个库是没法转换的 而WGS84和其它坐标系(gcj02.bd09)之间的转换可以通过ChangeCoord ...

  8. 调用高德地图Api实现通过地址转经纬度

    调用高德地图Api实现通过地址转经纬度 在高德地图开放平台注册一个key就可以了,链接在这儿高德地图开放平台 /*** @author _沉淀_* @version 1.0.0* @ClassName ...

  9. MCD19A2 MAIAC AOD 数据处理(三)均值+同日镶嵌+重投影(Grid转经纬度)

    本节包含以下三方面: 单景均值处理 同日镶嵌 重投影 一.均值 感觉上周均值写的比较乱,重新整理了一下: 使用的数据集:MCD19A2 MAIAC AOD 数据 目的:读取HDF文件AOD550数据集 ...

  10. 墨卡托坐标以及 墨卡托坐标转经纬度

    Google Maps.Virtual Earth等网络地理所使用的地图投影,常被称作Web Mercator或Spherical Mercator,它与常规墨卡托投影的主要区别就是把地球模拟为球体而 ...

最新文章

  1. 五年之内博士会开始内卷吗?
  2. 将行政区域导入SQL SERVER
  3. 【NLP】通俗讲解从Transformer到BERT模型!
  4. 四因素三水平正交试验表_软件测试|正交试验测试用例设计方法
  5. liunx 下的动态地址分配服务DHCP
  6. 如何将静态网页部署到github上
  7. ubuntu 的使用
  8. 《人月神话》学习指南
  9. 摄像头 - 双摄像头工作原理详解:RBG +RGB, RGB + Mono
  10. 第三方cookie是如何窥视你的?
  11. 浅析JVM中常见的垃圾收集算法
  12. 简单屏幕录制截屏工具
  13. 真人玩计算机图片大全集,微信真人表情图片大全 用自己的照片做微信真人表情包(好玩),各类搞笑素材任你选择...
  14. 【xla】二、【构图阶段】MarkForCompilationPassImpl
  15. 使用Nacos实现Spring Cloud Zuul的动态路由
  16. 【MVC、Spring MVC介绍、区别、执行流程】
  17. 钉钉 服务器 消息推送,【20210727 更新】 全能推送PushBot(原钉钉推送)支持企业微信,PushPlus,Bark...
  18. 剑灵南天国服务器位置,剑灵南天国实验室商城说明及FAQ
  19. ios label文字行间距_ios实践之Label 字间距、行间距、两端对齐、分行显示
  20. 【通俗向】假设检验(三):卡方检验和t检验

热门文章

  1. 怎么批量修改html文件后缀,如何批量修改文件后缀名
  2. windows命令修改IP地址
  3. Ubuntu 20.4 ip地址修改
  4. 关于 AI 边云协同解决方案的研究与讨论
  5. cad.net objectarx 后台打开dwg
  6. Wordpress鼠标指针样式自定义
  7. cad一键卸载工具叫什么_autodesk卸载工具一键卸载或安装CAD,3dmax 如何彻底卸载CAD系列软件 | 「讲文兄博客」...
  8. PC端微信扫码关注公众号并登录
  9. cenos回到linux桌面快捷键,CentOS 常用命令及快捷键整理
  10. opencv下载百度网盘链接及安装