创建实体

@Data
public class Place {private double X;private double Y;private double Z;
}

创建工具类

public class CoordinateConvertUtil {/*** 经纬度转地固坐标** @param place* @return*/private static Place llhToXyz(Place place){double x = place.getX();double y = place.getY();double z = place.getZ();double d2r = Math.PI / 180;double a = 6378137.0;        //椭球长半轴double f = 298.257223563;           //扁率倒数double b = a - a / f;//double b = 6356752.314245;           //椭球短半轴double e = Math.sqrt(a * a - b * b) / a;double L = x * d2r;double B = y * d2r;double H = z;double N = a / Math.sqrt(1 - e * e * Math.sin(B) * Math.sin(B));x = (N + H) * Math.cos(B) * Math.cos(L);y = (N + H) * Math.cos(B) * Math.sin(L);z = (N * (1 - e * e) + H) * Math.sin(B);place.setX(x);place.setY(y);place.setZ(z);return place;}/*** 地固坐标转经纬度** @param place* @return*/private static Place xyzToLlh(Place place) {double x = place.getX();double y = place.getY();double z = place.getZ();double epsilon = 0.000000000000001;double d2r = Math.PI / 180;double r2d = 180 / Math.PI;double a = 6378137.0;     //椭球长半轴double f = 298.257223563;           //扁率倒数double b = a - a / f;//double b = 6356752.314245;           //椭球短半轴double e = Math.sqrt(a * a - b * b) / a;double curB = 0;double N = 0;double calB = Math.atan2(z, Math.sqrt(x * x + y * y));int counter = 0;while (Math.abs(curB - calB) * r2d > epsilon  && counter < 25){curB = calB;N = a / Math.sqrt(1 - e * e * Math.sin(curB) * Math.sin(curB));calB = Math.atan2(z + N * e * e * Math.sin(curB), Math.sqrt(x * x + y * y));counter++;}x = Math.atan2(y, x) * r2d;y = curB * r2d;z = z / Math.sin(curB) - N * (1 - e * e);place.setX(x);place.setY(y);place.setZ(z);return place;}
}

测试

public class ConvertTest{public static void main(String[] args) {Place place = new Place(113.6, 38.8, 100);System.out.println("原始数据:" + place.toString());Place llhToXyz = CoordinateConvertUtil.llhToXyz(place);System.out.println("地固坐标:" + place.toString());Place xyzToLlh = CoordinateConvertUtil.xyzToLlh(llhToXyz);System.out.println("经纬度坐标: " + xyzToLlh.toString());}
}

输出结果

原始数据:Place{X=113.6, Y=38.8, Z=100.0}
地固坐标:Place{X=-1992676.3564735213, Y=4561055.97031189, Z=3975100.581388873}
经纬度坐标: Place{X=113.6, Y=38.8, Z=100.0}Process finished with exit code 0

Java实现地固坐标与经纬度转换相关推荐

  1. java gps转高德坐标_GPS 经纬度转换 百度、高德经纬度

    package com.ldygo.gw.gpsobd.utils; public class ECGeoCoordinateTransformUtil { static double x_pi = ...

  2. java将投影坐标转为地理坐标_贡献高斯投影坐标与经纬度转换的java源码

    下载了好几个源程序都不能用,在他们的基础上经过我与公式的核对.现在将代码改成了java 以下是完整代码:绝对能用,我现在的项目中就用的这个. package tms.base.systemlib; @ ...

  3. 高斯投影坐标与经纬度转换的java源码

    先收藏再说, 转 http://blog.sina.com.cn/s/blog_5656b0020100chbv.html 坐标系术语 大地坐标系:地心坐标系(WGS84).参心坐标系(北京54,西安 ...

  4. 经纬度坐标转换成px_墨卡托坐标与经纬度转换

    zoom为地图层级,最小zoom=0,此时瓦片总数量为1 X轴或Y轴的瓦片数量=2^zoom 瓦片总数量=2^zoom*2^zoom 每个瓦片像素为256*256 如:当zoom=2时,X轴Y轴的瓦片 ...

  5. 经纬度转换XY坐标,并计算距离

    import pandas as pd import numpy as np from pyproj import Transformer import matplotlib.pyplot as pl ...

  6. Threejs实现绘制地球,地理位置标注、经纬度转换世界坐标threejs坐标

    1,介绍 该示例使用的是 r95版本Three.js库. 主要实现功能:绘制地球和地理位置进行标注 效果图如下: 2,主要说明 准备一张地图,创建一个球体并进行贴图,把地理位置经纬度转换成threej ...

  7. 经纬度转高斯坐标 java_经纬度坐标与高斯坐标的转换代码

    /* 功能说明: 将绝对高斯坐标(y,x)转换成绝对的地理坐标(wd,jd).        */ // double y;     输入参数: 高斯坐标的横坐标,以米为单位 // double x; ...

  8. 经纬度转换成屏幕坐标

    学期projet总结: 当把点的数据和线的数据读进来之后,为了画出地图还有最重要的一步就是把实际的经纬度转换成屏幕像素点的坐标.在找老师讨论之前,我在网上查资料,找到了下边链接的文章,并按照这个方法画 ...

  9. 【Java、Redis】通过中心经纬度与半径获取范围内的结果集(类似附近的人)

    文章目录 需求 解决方案 什么是Redis + GeoHash 1.Java + Redis实现 引用的pom依赖 InitEquLongLatTask.java Controller Service ...

  10. 地图分幅组件的实现(一) ——图号和经纬度转换组件

    地图分幅组件的实现(一) --图号和经纬度转换组件 分类: GIS制图2011-04-08 10:39 334人阅读 评论(0) 收藏 举报 当前的制图一般有两种分幅方式,经纬分幅和矩形分幅.国内制图 ...

最新文章

  1. Gradle 使用技巧(四) - 如何定位和解决依赖冲突
  2. php5.4dev版本是,ubuntu 编译安装php5.4以上版本
  3. JSP 中的Cookie
  4. 为rm添加一个回收站|将linux下的rm命令改造成mv到指定的目录下
  5. C#操作Excel,权限问题
  6. chrome 插件 vimium 介绍
  7. 操作系统(5) -- 输入/输出管理
  8. SAP Spartacus UserService.get方法的调用时机
  9. redmine安装指引
  10. android padding作用,android:padding和android:layout_margin的区别
  11. 实现android应用程序自动化测试的批处理脚本,简单入手移动端并发自动化测试:Appium+Robot+ 批处理脚本...
  12. python函数介绍
  13. 特斯拉电动皮卡不太香:预订表现不及3年前的Model 3
  14. 在线就能用的 SQL 练习平台我给你找好了
  15. python高维数据_高维数据怎样可视化?
  16. 计算机组装与维修标准教程,计算机组装与维护标准教程(2008版)
  17. java 调用关机命令_java调用关机命令
  18. linux配置cookie认证,Nginx配置修改网页cookie属性
  19. 基础-07-八大疑问词
  20. 关于Autosar中的NM模块的理解

热门文章

  1. 四川自考计算机信息管理专业,计算机信息管理专业2019年10月四川自考科目及考试时间[本科]...
  2. Matlab中插值函数汇总和使用说明
  3. 【MapReuce】读取本地美国疫情数据存储结果到MySQL
  4. 【最优化基础】惩罚和障碍函数
  5. 虚拟机ip映射到外网
  6. matlab中各种数据类型及转换
  7. ZC公司员工评分系统——前台排版算法
  8. 离线语音风扇设计应用案例
  9. 计算机做无线AP共享文件,Windows 7妙用 笔记本变无线AP轻松共享
  10. matlab fspecial 位置,matlab fspecial 用法解释