JAVA 经纬度转换成直角坐标系,以及直角坐标系转换成经纬度算法
运用米勒投影原理 Java实现: public class JWDUtil {private static DecimalFormat format = new DecimalFormat("###0.000");public static List<Double> MillierConvertion(double lon , double lat){ArrayList<Double> list = new ArrayList<>();double L = 6381372 * Math.PI * 2;//地球周长double W = L;// 平面展开后,x轴等于周长double H = L / 2;// y轴约等于周长一半double mill = 2.3;// 米勒投影中的一个常数,范围大约在正负2.3之间double x = lon * Math.PI / 180;// 将经度从度数转换为弧度double y = lat * Math.PI / 180;// 将纬度从度数转换为弧度y = 1.25 * Math.log(Math.tan(0.25 * Math.PI + 0.4 * y));// 米勒投影的转换// 弧度转为实际距离x = (W / 2) + (W / (2 * Math.PI)) * x;y = (H / 2) - (H / (2 * mill)) * y;Double v1 = (double) Math.round(x * 1000) / 1000000; //精确小数后三位,单位KMDouble v2 = (double) Math.round(y * 1000) / 1000000;String format1 = format.format(v1); //科学计数法下转换String format2 = format.format(v2);Double xDouble = Double.valueOf(format1);Double yDouble = Double.valueOf(format2);list.add(xDouble);list.add(yDouble);return list;} //XY坐标系转换成经纬度代码public static List<Double> XYTOJWD(double X,double Y){double L = 6381372 * Math.PI*2;double mill = 2.3;double JD = (X*1000-(L/2 ))*360/L; // 根据X轴计算经度double v = (L / 4 - Y*1000) * mill*2/ (L/2) ;double WD = (Math.atan(Math.pow(Math.E, (v / 1.25))) - (0.25 * Math.PI))/0.4 * 180 / Math.PI;//根据Y轴计算纬度ArrayList<Double> list = new ArrayList<>();list.add(JD);list.add(WD);return list;} }
Python 实现
import numpy as np def MillierConvertion(lon ,lat):L=6381372*np.pi*2W=LH=L/2mill=2.3x=lon*np.pi/180y=lat*np.pi/180y=1.25*np.log(np.tan(0.25*np.pi+0.4*y))x=(W/2)+(W/(2*np.pi))*xy=(H/2)-(H/(2*mill))*ydou=[x/1000,y/1000]return doudef XYTOJWD(X,Y):L = 6381372 * np.pi * 2mill = 2.3JD = (X * 1000 - (L / 2)) * 360 / Lv = (L / 4 - Y * 1000) * mill * 2 / (L / 2)WD = (np.arctan(np.exp((v / 1.25))) - (0.25 * np.pi))/0.4 * 180 / np.pilist=[JD,WD]return list print(MillierConvertion(120.7867915, 24.3729099)) print(XYTOJWD(33500.41531086378,8133.060038815809))
运行结果
[33500.41531086378, 8133.060038815809]
[120.7867915, 24.372909900000003]
JAVA 经纬度转换成直角坐标系,以及直角坐标系转换成经纬度算法相关推荐
- java非负整数怎么设_使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法...
使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 一.题目要求 将非负十进制整数n转换成b进制.(其中b=2~16) ...
- java 将json转成utf 8_C# JSON转换以及编码转换
C# JSON转换以及编码转换 一.C# Json转换 首先需要下载安装Newtonsoft.Json.dll,下载地址 引用后再添加:using Newtonsoft.Json;using Newt ...
- Java将html转换成pdf、html转换成图片
一.html转成pdf 使用的jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>i ...
- java将图片的url转换成File,File转换成二进制流byte
package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...
- Java将16进制字符串,转换成字符串
Java将16进制字符串,转换成字符串 前段时间遇到同事给了我一串16进制的字符串,让我把它给转成正常的字符串. 16进制字符串: c8:ed:cc:bd:d5:eb 转换后正常的字符串: 软探针 解 ...
- java 中文转成_Java将中文转换成unicode字符。
在看Java国际化程序的实现.从最基础的建立不同国家的属性文件开始吧. 中文:你好! 英语:Hello! 法语:Bonjour! 在属性文件定义时必须按照"名称_国家代码"的形式命 ...
- 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...
- java如何将char类型的数字转换成int型的数字
java如何将char类型的数字转换成int型的数字 public class CharToIntConverter {public static void main(String[] args) { ...
- java二维码编码生成并转换成流传入前端页面
java二维码编码生成并转换成流传入前端页面 这里主要用了com.google.zxing的依赖,这个依赖主要可以完成图片叠加.二维码生成和图片加文字等功能. ①添加依赖 <dependency ...
- java大数转换成字符串,js字符串转换成数字与数字转换成字符串的实现方法
摘要:这篇JavaScript栏目下的"js字符串转换成数字与数字转换成字符串的实现方法",介绍的技术点是"js字符串.字符串转换.实现方法.数字转换.字符串.转换&qu ...
最新文章
- docker使用_使用Docker正确的姿势
- luogu3244 bzoj4011 HNOI2015 落忆枫音
- SAP MM 采购订单收货被取消了还是不能增加新的delivery cost!
- RuntimeError: size mismatch, m1: [80 x 4], m2: [320 x 50] at ..\aten\src\TH/generic/THTensorMath.cpp
- SQL转换全角和半角函数
- HTML 为啥称“超文本标记语言”?
- [BUG]Ubuntu server 16.04安装,无网卡驱动解决
- mimics能导出什么格式_Mimics到底支持怎样的图像格式(修正版)
- 智慧供水:整体解决方案建设需求
- 网上流行护眼色的RGB值和颜色代码(豆沙绿:RGB颜色 红:199,绿:237,蓝:204)
- Dialog去掉默认白色背景
- c语言直线和椭圆的交点,直线与椭圆交点距离公式
- 翻译:软件测试的未来五个趋势
- Mysql B+树索引的使用
- 概率论与数理统计基础概念与重要定义汇总
- SpringBoot 日期转换
- 为什么百度查到的ip和ipconfig查到的不一样?
- github 开源android项目
- Leetcode--Java--340. 至多包含 K 个不同字符的最长子串
- 10060 mysql_MySQL错误:Can't connect to MySQL server (10060) 解决方案
热门文章
- 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶
- Datax-HdfsWriter如何实现支持decimal类型数据写入
- 不同时区时间换算_世界时区划分时差在线查询计算_时间换算器
- 2021京东618活动脚本App和电脑版最新版(建议使用app版)
- qstring 字符串查找_怎样用QT查找字符串并标记要查找的内容
- 毕业论文给图、表格、公式编号(不设置多级列表)
- 卡方检验四格表怎么做_SPSS案例实践:2*2四格表卡方检验
- php城市切换,城市切换 - 网下淘
- 公众号怎么提升阅读量
- 打开Form时报错 FRM-18108:装载下列对象失败 FRM-10102不能附加PLSQL程序库