运用米勒投影原理
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 经纬度转换成直角坐标系,以及直角坐标系转换成经纬度算法相关推荐

  1. java非负整数怎么设_使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法...

    使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 一.题目要求 将非负十进制整数n转换成b进制.(其中b=2~16) ...

  2. java 将json转成utf 8_C# JSON转换以及编码转换

    C# JSON转换以及编码转换 一.C# Json转换 首先需要下载安装Newtonsoft.Json.dll,下载地址 引用后再添加:using Newtonsoft.Json;using Newt ...

  3. Java将html转换成pdf、html转换成图片

    一.html转成pdf 使用的jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>i ...

  4. java将图片的url转换成File,File转换成二进制流byte

    package com.xqy;import java.io.*; import java.net.HttpURLConnection; import java.net.URL; //java将图片的 ...

  5. Java将16进制字符串,转换成字符串

    Java将16进制字符串,转换成字符串 前段时间遇到同事给了我一串16进制的字符串,让我把它给转成正常的字符串. 16进制字符串: c8:ed:cc:bd:d5:eb 转换后正常的字符串: 软探针 解 ...

  6. java 中文转成_Java将中文转换成unicode字符。

    在看Java国际化程序的实现.从最基础的建立不同国家的属性文件开始吧. 中文:你好! 英语:Hello! 法语:Bonjour! 在属性文件定义时必须按照"名称_国家代码"的形式命 ...

  7. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

  8. java如何将char类型的数字转换成int型的数字

    java如何将char类型的数字转换成int型的数字 public class CharToIntConverter {public static void main(String[] args) { ...

  9. java二维码编码生成并转换成流传入前端页面

    java二维码编码生成并转换成流传入前端页面 这里主要用了com.google.zxing的依赖,这个依赖主要可以完成图片叠加.二维码生成和图片加文字等功能. ①添加依赖 <dependency ...

  10. java大数转换成字符串,js字符串转换成数字与数字转换成字符串的实现方法

    摘要:这篇JavaScript栏目下的"js字符串转换成数字与数字转换成字符串的实现方法",介绍的技术点是"js字符串.字符串转换.实现方法.数字转换.字符串.转换&qu ...

最新文章

  1. docker使用_使用Docker正确的姿势
  2. luogu3244 bzoj4011 HNOI2015 落忆枫音
  3. SAP MM 采购订单收货被取消了还是不能增加新的delivery cost!
  4. RuntimeError: size mismatch, m1: [80 x 4], m2: [320 x 50] at ..\aten\src\TH/generic/THTensorMath.cpp
  5. SQL转换全角和半角函数
  6. HTML 为啥称“超文本标记语言”?
  7. [BUG]Ubuntu server 16.04安装,无网卡驱动解决
  8. mimics能导出什么格式_Mimics到底支持怎样的图像格式(修正版)
  9. 智慧供水:整体解决方案建设需求
  10. 网上流行护眼色的RGB值和颜色代码(豆沙绿:RGB颜色 红:199,绿:237,蓝:204)
  11. Dialog去掉默认白色背景
  12. c语言直线和椭圆的交点,直线与椭圆交点距离公式
  13. 翻译:软件测试的未来五个趋势
  14. Mysql B+树索引的使用
  15. 概率论与数理统计基础概念与重要定义汇总
  16. SpringBoot 日期转换
  17. 为什么百度查到的ip和ipconfig查到的不一样?
  18. github 开源android项目
  19. Leetcode--Java--340. 至多包含 K 个不同字符的最长子串
  20. 10060 mysql_MySQL错误:Can't connect to MySQL server (10060) 解决方案

热门文章

  1. 倍福TwinCAT(贝福Beckhoff)应用教程12.3 TwinCAT控制松下伺服 NC进阶
  2. Datax-HdfsWriter如何实现支持decimal类型数据写入
  3. 不同时区时间换算_世界时区划分时差在线查询计算_时间换算器
  4. 2021京东618活动脚本App和电脑版最新版(建议使用app版)
  5. qstring 字符串查找_怎样用QT查找字符串并标记要查找的内容
  6. 毕业论文给图、表格、公式编号(不设置多级列表)
  7. 卡方检验四格表怎么做_SPSS案例实践:2*2四格表卡方检验
  8. php城市切换,城市切换 - 网下淘
  9. 公众号怎么提升阅读量
  10. 打开Form时报错 FRM-18108:装载下列对象失败 FRM-10102不能附加PLSQL程序库