Android Java GPS坐标与高斯坐标相互转换(二)
Android Java GPS坐标与高斯坐标相互转换(二)
高斯坐标转GPS坐标:
前边写了GPS坐标转高斯坐标了,详情可以查看:Android Java GPS坐标与高斯坐标相互转换(一) GPS坐标转高斯坐标。反向相互在开发的时候遇到了很大的问题,根据已查的资料,反转之后的坐标数据误差太大,根本不能满足生产条件的使用。所以就又根据已有的资料进行整合和调整,做出了段转换代码,其误差在可接受的范围内,一般在分米基本上。
同样在做平面坐标转GPS坐标的时候,也是两步(正转的步骤逆向):
1.将平面坐标去掉矫正之后,然后减去偏差,得到高斯坐标;
2.高斯坐标再转成GPS坐标;
高斯 --> GPS 转换的计算公式:
public static double[] Gauss2LonLat(double X, double Y) {double e² = 0.0066943799901;// e的平方double e´² = e² / (1 - e²);// e撇的平方double a = 6378137;// WGS84椭球double b = 6356752.3142;// 短半轴double L0 = 117.0;// 北京的中央子午线(根据所在城市设置中央子午线)double e1 = (1 - (b / a)) / (1 + (b / a));double k0 = 1;double FN = 0;double FE = 500 * 1000;double Mf = (X - FN) / k0;double ψ = Mf / (a * (1 - (e² / 4) - (3 * e² * e²) / 64 - (5 * e² * e² * e²) / 256));double Bf = ψ + (3 * e1 / 2 - 27 * Math.pow(e1, 3) / 32) * Math.sin(2 * ψ) + (21 * Math.pow(e1, 2) / 16 - 55 * Math.pow(e1, 4) / 32)* Math.sin(4 * ψ) + (151 * Math.pow(e1, 3) / 96) * Math.sin(6 * ψ) + (1097 * Math.pow(e1, 4) / 512) * Math.sin(8 * ψ);double Nf = a / Math.sqrt(1 - e² * Math.sin(Bf) * Math.sin(Bf));double Tf = Math.tan(Bf) * Math.tan(Bf);double Cf = e´² * Math.cos(Bf) * Math.cos(Bf);double D = (Y - FE) / (k0 * Nf);Log.e("TAG", "e1 = " + e1 + ",e² = " + e²);double Rf = a * (1 - (e1 + e²) / 1.55) / Math.pow((1 - e² * Math.sin(Bf) * Math.sin(Bf)), 3 / 2);double B = Bf - (Nf * Math.tan(Bf) / Rf) * (Math.pow(D, 2) / 2 - (5 + 3 * Tf + Cf - 9 * Tf * Cf) * Math.pow(D, 4) / 24 + (61 + 90 * Tf + 45 * Math.pow(Tf, 2)) * Math.pow(D, 6) / 720);double L = (1 / Math.cos(Bf)) * (D - (1 + 2 * Tf + Cf) * Math.pow(D, 3) / 6 + (5 + 28 * Tf + 6 * Cf + 8 * Tf * Cf + 24 * Math.pow(Tf, 2))* Math.pow(D, 5) / 120);double Lat = B * 180 / Math.PI;double Lon = L * 180 / Math.PI + L0;北京市:117double LonLat[] = new double[2];LonLat[0] = Lon;LonLat[1] = Lat;return LonLat;}
返回的结果就是标准的GPS坐标。
Android Java GPS坐标与高斯坐标相互转换(二)相关推荐
- 经纬度坐标与高斯坐标的转换代码
经纬度坐标与高斯坐标的转换代码 /* 功能说明: 将绝对高斯坐标(y,x)转换成绝对的地理坐标(wd,jd). */ // double y; 输入参数: 高斯坐标的横坐标,以米 ...
- 经纬度转高斯坐标 java_经纬度坐标与高斯坐标的转换代码
/* 功能说明: 将绝对高斯坐标(y,x)转换成绝对的地理坐标(wd,jd). */ // double y; 输入参数: 高斯坐标的横坐标,以米为单位 // double x; ...
- Java经纬度坐标与高斯坐标的转换
以中央子午线114.0为例. // 由高斯投影坐标反算成经纬度public static double[] GaussToBL(double X, double Y){double[] output ...
- 【转载】osgeo和pyproj:经纬度坐标和高斯坐标互相转换
一.前言 搞地图和自动驾驶的都知道,坐标转换是非常频繁的事情,有时候需要在各种坐标之间来回的转换,最近使用python代码处理地图数据,在使用osgeo库中的gdal时,发现了gdal v2和V3的一 ...
- 关于GPS坐标转百度坐标与goolg坐标转百度坐标java代码实现方法
关于GPS坐标转百度坐标与goolg坐标转百度坐标java代码实现方法 百度显示坐标经过了两次加密所以需要转换. <pre name="code" class="j ...
- android gps 火星坐标,GPS真实坐标与火星地图坐标/百度地图坐标的转换
#include #include #include static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; HardwareSerial ss( ...
- gps转百度地图坐标 java,GPS坐标与百度地图坐标转换
空间坐标公式: image.png 上述四个方程式中待测点坐标x. y. z 和Vto为未知参数,其中di=c△ti (i=1.2.3.4). di (i=1.2.3.4) 分别为卫星1.卫星2.卫星 ...
- gps坐标转百度坐标 java_BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换...
为什么不统一用WGS84地理坐标系这就是国家地理测绘总局对于出版地图的要求,出版地图必须符合GCJ02坐标系标准了,也就是国家规定不能直接使用WGS84地理坐标系.所以定位大家感觉不准确很多又叫出版地 ...
- 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
转自:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标.百度坐标.WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版 火星坐标 ...
最新文章
- 错误	1	“System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制...
- day12 装饰器进阶
- Element-ui自定义主题换肤
- 25+AI技术主题演讲及项目展示!英特尔AI全球影响力嘉年华开启,全球AI人才线上群聚
- 信息安全系统第十三周学习总结 20135218 姬梦馨
- C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。
- tensorflow计算网络占用内存_详细图解神经网络梯度下降法(tensorflow计算梯度)...
- Java中实现定时任务的3种方法!
- struct多种声明定义写法的小结
- Ubuntu中DenyHosts安装及配置
- python 正则表达式学习-group
- mock.js那点事(上)
- Client network socket disconnected before secure TLS connection was establishedView in Conso
- 四象限原则+番茄时间管理法
- 台式计算机无线网卡怎么找,win7台式机找不到无线网卡怎么办
- other|钱海物流接口上传运单号开发
- 【2019新年计划】
- 【转】一生必看的成功学书(转载)
- python程序设计机械工业出版社课后答案-Python 3程序设计基础
- org.eclipse.jdt版本更新导致包引入问题