1.以下位代码直接调用就可以,中央子午线需要查看网址经纬度中央子午线对照表。需要geotools和opengis和kotlin需要的jar包。下载链接:https://pan.baidu.com/s/1AZnt3YHk9CyofYdvgLRaHQ
提取码:ak47 
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package org.fh.controller.fhoa;import cn.hutool.core.lang.Tuple;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.geotools.geometry.jts.JTS;
import org.geotools.referencing.CRS;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.junit.Test;
import org.opengis.geometry.MismatchedDimensionException;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import kotlin.jvm.internal.Intrinsics;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.validation.constraints.NotNull;
import java.awt.geom.Point2D;
import java.util.Date;
/*** @Description  84坐标转china2000* @Author 未知人员* @Date 2021/8/27 11:21 * @Param * @return **/
@Controller
@RequestMapping(value="/Geo")
public class Geo {private  double p = 206264.80624709636D;/**WGS84地理坐标系转换成CGCS2000坐标* @throws Exception*/@RequestMapping(value="/list")@ResponseBodypublic  double [] xytolatlon() {double lat ,lon;double Y=612508.8925;//平面坐标Ydouble X=4998860.4083;//平面坐标Xdouble L0=123D;//中央子午线,结合这个网址进行查找,目前用的EPSG:4532中的123D。https://wenku.baidu.com/view/e219e246e3bd960590c69ec3d5bbfd0a7856d530.htmlY-=500000;double []  result  = new double[2];double iPI = 0.0174532925199433;//pi/180double a = 6378137.0; //长半轴 mdouble b = 6356752.31414; //短半轴 mdouble f = 1/298.257222101;//扁率 a-b/adouble e = 0.0818191910428; //第一偏心率 Math.sqrt(5)double ee = Math.sqrt(a*a-b*b)/b; //第二偏心率double bf = 0; //底点纬度double a0 = 1+(3*e*e/4) + (45*e*e*e*e/64) + (175*e*e*e*e*e*e/256) + (11025*e*e*e*e*e*e*e*e/16384) + (43659*e*e*e*e*e*e*e*e*e*e/65536);double b0 = X/(a*(1-e*e)*a0);double c1 = 3*e*e/8 +3*e*e*e*e/16 + 213*e*e*e*e*e*e/2048 + 255*e*e*e*e*e*e*e*e/4096;double c2 = 21*e*e*e*e/256 + 21*e*e*e*e*e*e/256 + 533*e*e*e*e*e*e*e*e/8192;double c3 = 151*e*e*e*e*e*e*e*e/6144 + 151*e*e*e*e*e*e*e*e/4096;double c4 = 1097*e*e*e*e*e*e*e*e/131072;bf = b0 + c1*Math.sin(2*b0) + c2*Math.sin(4*b0) +c3*Math.sin(6*b0) + c4*Math.sin(8*b0); // bf =b0+c1*sin2b0 + c2*sin4b0 + c3*sin6b0 +c4*sin8b0 +...double tf = Math.tan(bf);double n2 = ee*ee*Math.cos(bf)*Math.cos(bf); //第二偏心率平方成bf余弦平方double c = a*a/b;double v=Math.sqrt(1+ ee*ee*Math.cos(bf)*Math.cos(bf));double mf = c/(v*v*v); //子午圈半径double nf = c/v;//卯酉圈半径//纬度计算lat=bf-(tf/(2*mf)*Y)*(Y/nf) * (1-1/12*(5+3*tf*tf+n2-9*n2*tf*tf)*(Y*Y/(nf*nf))+1/360*(61+90*tf*tf+45*tf*tf*tf*tf)*(Y*Y*Y*Y/(nf*nf*nf*nf)));//经度偏差lon=1/(nf*Math.cos(bf))*Y -(1/(6*nf*nf*nf*Math.cos(bf)))*(1+2*tf*tf +n2)*Y*Y*Y + (1/(120*nf*nf*nf*nf*nf*Math.cos(bf)))*(5+28*tf*tf+24*tf*tf*tf*tf)*Y*Y*Y*Y*Y;result[0] =retain6(lat/iPI);result[1] =retain6(L0+lon/iPI);System.out.println(result[1]+","+result[0]);//GetXY(result[0],result[1],6.0D);return result;}private  double retain6(double num) {String result = String.format("%.10f", num);//小数点后面保留10位小数return Double.valueOf(result);}/*** CGCS2000坐标转换成WGS84地理坐标系* @param x纬度* @param y经度*/public  void xyTowgs84(double x,double y) {double L0 = gaussLongToDegreen(x, y, 6);double a = 6378137.0D;double efang = 0.0066943799901413D;double e2fang = 0.0067394967422764D;y = y - (double)500000;double m0 = 0.0D;double m2 = 0.0D;double m4 = 0.0D;double m6 = 0.0D;double m8 = 0.0D;m0 = a * ((double)1 - efang);m2 = 1.5D * efang * m0;m4 = efang * m2 * 5.0D / 4.0D;m6 = efang * m4 * 7.0D / 6.0D;m8 = efang * m6 * 9.0D / 8.0D;double a0 = 0.0D;double a2 = 0.0D;double a4 = 0.0D;double a6 = 0.0D;double a8 = 0.0D;a0 = m0 + m2 / 2.0D + m4 * 3.0D / 8.0D + m6 * 5.0D / 16.0D + m8 * 35.0D / 128.0D;a2 = m2 / 2.0D + m4 / 2.0D + m6 * 15.0D / 32.0D + m8 * 7.0D / 16.0D;a4 = m4 / 8.0D + m6 * 3.0D / 16.0D + m8 * 7.0D / 32.0D;a6 = m6 / 32.0D + m8 / 16.0D;a8 = m8 / 128.0D;double FBf = 0.0D;double Bf0 = x / a0;for(double Bf1 = 0.0D; Bf0 - Bf1 >= 1.0E-4D; Bf0 = (x - FBf) / a0) {Bf1 = Bf0;FBf = -a2 * Math.sin((double)2 * Bf0) / (double)2 + a4 * Math.sin((double)4 * Bf0) / (double)4 - a6 * Math.sin((double)6 * Bf0) / (double)6 + a8 * Math.sin((double)8 * Bf0) / (double)8;}double Wf = Math.sqrt((double)1 - efang * Math.sin(Bf0) * Math.sin(Bf0));double Nf = a / Wf;double Mf = a * ((double)1 - efang) / Math.pow(Wf, 3.0D);double nffang = e2fang * Math.cos(Bf0) * Math.cos(Bf0);double tf = Math.tan(Bf0);double B = Bf0 - tf * y * y / ((double)2 * Mf * Nf) + tf * ((double)5 + (double)3 * tf * tf + nffang - (double)9 * nffang * tf * tf) * Math.pow(y, 4.0D) / ((double)24 * Mf * Math.pow(Nf, 3.0D)) - tf * ((double)61 + (double)90 * tf * tf + (double)45 * Math.pow(tf, 4.0D)) * Math.pow(y, 6.0D) / ((double)720 * Mf * Math.pow(Nf, 5.0D));double l = y / (Nf * Math.cos(Bf0)) - ((double)1 + (double)2 * tf * tf + nffang) * Math.pow(y, 3.0D) / ((double)6 * Math.pow(Nf, 3.0D) * Math.cos(Bf0)) + ((double)5 + (double)28 * tf * tf + (double)24 * Math.pow(tf, 4.0D)) * Math.pow(y, 5.0D) / ((double)120 * Math.pow(Nf, 5.0D) * Math.cos(Bf0));double L = l + L0;double[] array_B = this.rad2dms(B);double[] array_L = this.rad2dms(L);double Bdec = this.dms2dec(array_B);double Ldec = this.dms2dec(array_L);System.out.println(Bdec+":"+Ldec);//return new Tuple(Bdec, Ldec);}public  double gaussLongToDegreen(double B, double L, int N) {double L00 = (double)Math.round(L / (double)3) * (double)3;return L00 / (double)180 * 3.1415926D;}public  double[] rad2dms(double rad) {double[] a = new double[]{0.0D, 0.0D, 0.0D};double dms = rad * p;a[0] = Math.floor(dms / 3600.0D);a[1] = Math.floor((dms - a[0] * (double)3600) / 60.0D);a[2] = (double)((int)Math.floor(dms - a[0] * (double)3600)) - a[1] * (double)60;return a;}public  double dms2dec( double[] dms) {Intrinsics.checkNotNullParameter(dms, "dms");double dec = 0.0D;dec = dms[0] + dms[1] / 60.0D + dms[2] / 3600.0D;return dec;}
}

WGS84地理坐标系和CGCS2000坐标相互转换相关推荐

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

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

  2. ArcGIS笔记2_如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系

    本文目录 前言 Step 1 经纬度WGS84地理坐标系 → 经纬度ITRF2000地理坐标系 Step 2 经纬度ITRF2000地理坐标系 → 经纬度CGCS2000地理坐标系 Step 3 经纬 ...

  3. 记录--Openlayers 高德腾讯、百度、天地图坐标相互转换

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在地图开发过程中,坐标的转换是很常用的功能,国内的话一般西安80(EPSG:4610).北京54(EPSG:2433)转WGS84比较多, ...

  4. 高德地图、百度地图、腾讯地图坐标相互转换

    高德地图.百度地图.腾讯地图坐标相互转换 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS ...

  5. GPS、谷歌、百度、高德坐标相互转换

    GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始 ...

  6. Android Java GPS坐标与高斯坐标相互转换(二)

    Android Java  GPS坐标与高斯坐标相互转换(二) 高斯坐标转GPS坐标: 前边写了GPS坐标转高斯坐标了,详情可以查看:Android Java GPS坐标与高斯坐标相互转换(一) GP ...

  7. Openlayers 高德腾讯、百度、天地图坐标相互转换

    Openlayers 腾讯.百度.天地图坐标转换 OpenLayers 教程 Openlayers 腾讯.百度.天地图坐标转换 在线示例 OpenLayers 教程 在地图开发过程中,坐标的转换是很常 ...

  8. JAVA实用工具类-GPS,高德,百度坐标相互转换

    经过本人实际验证,此工具类的转换方法靠谱,所以拿出来给大家分享. 验证方式有二: 1,通过此工具类转换的坐标和调百度高德地图转换后的坐标,进行对比,误差在小数点后四到五位才出现. 2,把用此工具类转换 ...

  9. 基于Postgresql和PostGIS实现火星坐标系、百度坐标系、WGS84坐标系、CGCS2000坐标系互转

    背景 最近有一个需求,需要将WGS84转成火星坐标系.个人觉得在代码中逐个点坐标进行转换,太麻烦,而且效率低.PostGIS的st_transform虽然可以进行坐标转换,但是不支持国内这些坐标系.最 ...

最新文章

  1. java Servlet学习笔记(一)
  2. 深度学习之基于卷积神经网络实现超大Mnist数据集识别
  3. JVM入门到放弃之基本概念
  4. 安装zabbix及LNMP的平台的搭建
  5. PHP学习之路(二)让我们开始环境搭建(Windows篇)
  6. lol英雄联盟符文助手源码/一键应用符文
  7. callbackcallback()到底有什么涵义?
  8. mysql 连接 110 超时_Nginx和mysql上行超时超时(110:连接超时)
  9. Linux内存管理:内存描述之高端内存
  10. 速升级!SonicWall 3个已遭利用的严重0day 影响企业邮件安全设备
  11. .o文件 linux生成,vmlinux.o 生成
  12. oracle+规则执行,Oraclejobinterval规则
  13. 什么是erp管理系统
  14. 激光雷达--C16镭神16线三维激光雷达使用
  15. Miracle密码算法开源库(四)分析 :mrarth2.c
  16. swift获取openuuid_iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P
  17. “\t“和‘\t‘区别
  18. 苹果手机功能大全介绍_抖音手机软件剪辑推荐及功能介绍
  19. pyinstxtractor.py 的改进 - 反编译pyinstaller生成exe的工具
  20. 一些基于新闻表示和用户表示的新闻推荐模型总结:NPA/ NAML/ LSTUR/ NRMS

热门文章

  1. Java 中的 valueOf() 方法
  2. 02 MySQL优化 - 优化SQL语句
  3. 文件翻译改名,将名称从中文翻译成英文的方法
  4. 三相四线与漏电保护器
  5. Python项目:学生管理系统连接MySQL数据库(增删改查、排序、统计、显示所有信息)
  6. 造成商业软件失败的13种原因
  7. 进程间通信之管道(匿名管道与命名管道)
  8. 万物心选——找到那份属于自己的归属
  9. #C语言学习——第一周 求长方形周长面积
  10. Oracle KSL Latch 管理层 与 Latch管理(未看)