正算公式(将经纬度转化为坐标):

java代码(附有源代码和修改后的代码):

源代码:

/**

* 由经纬度反算成高斯投影坐标

*

* @param longitude

* @param latitude

* @return

*/

public static double[] GaussToBLToGauss(double longitude, double latitude) {

int ProjNo = 0;

int ZoneWide; // //带宽

double[] output = new double[2];

double longitude1, latitude1, longitude0, X0, Y0, xval, yval;

double a, f, e2, ee, NN, T, C, A, M, iPI;

iPI = 0.0174532925199433; // //3.1415926535898/180.0;

ZoneWide = 6; // //6度带宽

a = 6378245.0;

f = 1.0 / 298.3; // 54年北京坐标系参数

// //a=6378140.0; f=1/298.257; //80年西安坐标系参数

ProjNo = (int) (longitude / ZoneWide);

longitude0 = ProjNo * ZoneWide + ZoneWide / 2;

longitude0 = longitude0 * iPI;

longitude1 = longitude * iPI; // 经度转换为弧度

latitude1 = latitude * iPI; // 纬度转换为弧度

e2 = 2 * f - f * f;

ee = e2 * (1.0 - e2);

NN = a

/ Math.sqrt(1.0 - e2 * Math.sin(latitude1)

* Math.sin(latitude1));

T = Math.tan(latitude1) * Math.tan(latitude1);

C = ee * Math.cos(latitude1) * Math.cos(latitude1);

A = (longitude1 - longitude0) * Math.cos(latitude1);

M = a

* ((1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256)

* latitude1

- (3 * e2 / 8 + 3 * e2 * e2 / 32 + 45 * e2 * e2 * e2

/ 1024) * Math.sin(2 * latitude1)

+ (15 * e2 * e2 / 256 + 45 * e2 * e2 * e2 / 1024)

* Math.sin(4 * latitude1) - (35 * e2 * e2 * e2 / 3072)

* Math.sin(6 * latitude1));

// 因为是以赤道为Y轴的,与我们南北为Y轴是相反的,所以xy与高斯投影的标准xy正好相反;

xval = NN

* (A + (1 - T + C) * A * A * A / 6 + (5 - 18 * T + T * T + 72

* C - 58 * ee)

* A * A * A * A * A / 120);

yval = M

+ NN

* Math.tan(latitude1)

* (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24 + (61

- 58 * T + T * T + 600 * C - 330 * ee)

* A * A * A * A * A * A / 720);

X0 = 1000000L * (ProjNo + 1) + 500000L;

Y0 = 0;

xval = xval + X0;

yval = yval + Y0;

output[0] = xval;

output[1] = yval;

return output;

}

java代码是网上找的, 原作者对该代码很有自信, 我根据与正算公式的比较, 发现了几个不同点, 对代码做了修改.

不同点1:ee不同

代码中的"ee = e2 * (1.0 - e2)",这对应了正算公式中的e'的平方, 代码中的f就是正算公式中的扁率α.  计算ee是否与e'的平方一致, e的平方=(a²-b²)/a²,  e'的平方=(a²-b²)/b², 过程如下:

一. e2=2*f-f*f=2*(a-b)/a-(a-b)/a * (a-b)/a=(a²-b²)/a²;// e2=公式中e的平方,正确

二. ee=e2*(1.0-e2)=(a²-b²)b²/(a² * a²);//ee!=e'的平方

不同点2: 代码与公式某常量值不同

公式中的X=.....(...+270C-330TC)...; Y=....(...+14C-58TC)....;

对应代码分别为...(...+600*C-330*ee)..; ...(...+72*C-58*ee);

修改后的代码:

/**

* 由经纬度反算成高斯投影坐标

*

* @param longitude

* @param latitude

* @return

*/

public static double[] GaussToBLToGauss(double longitude, double latitude) {

int ProjNo = 0;

int ZoneWide; // //带宽

double[] output = new double[2];

double longitude1, latitude1, longitude0, X0, Y0, xval, yval;

double a, f, e2, ee, NN, T, C, A, M, iPI;

iPI = 0.0174532925199433; // //3.1415926535898/180.0;

ZoneWide = 6; // //6度带宽

a = 6378245.0;

f = 1.0 / 298.3; // 54年北京坐标系参数

// //a=6378140.0; f=1/298.257; //80年西安坐标系参数

ProjNo = (int) (longitude / ZoneWide);

longitude0 = ProjNo * ZoneWide + ZoneWide / 2;

longitude0 = longitude0 * iPI;

longitude1 = longitude * iPI; // 经度转换为弧度

latitude1 = latitude * iPI; // 纬度转换为弧度

e2 = 2 * f - f * f;

ee = e2 / (1.0 - e2);  NN = a

/ Math.sqrt(1.0 - e2 * Math.sin(latitude1)

* Math.sin(latitude1));

T = Math.tan(latitude1) * Math.tan(latitude1);

C = ee * Math.cos(latitude1) * Math.cos(latitude1);

A = (longitude1 - longitude0) * Math.cos(latitude1);

M = a

* ((1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256)

* latitude1

- (3 * e2 / 8 + 3 * e2 * e2 / 32 + 45 * e2 * e2 * e2

/ 1024) * Math.sin(2 * latitude1)

+ (15 * e2 * e2 / 256 + 45 * e2 * e2 * e2 / 1024)

* Math.sin(4 * latitude1) - (35 * e2 * e2 * e2 / 3072)

* Math.sin(6 * latitude1));

// 因为是以赤道为Y轴的,与我们南北为Y轴是相反的,所以xy与高斯投影的标准xy正好相反;

xval = NN

* (A + (1 - T + C) * A * A * A / 6 + (5 - 18 * T + T * T + 14      * C - 58 * ee)

* A * A * A * A * A / 120);

yval = M

+ NN

* Math.tan(latitude1)

* (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24 + (61

- 58 * T + T * T + 270 * C - 330 * ee)

* A * A * A * A * A * A / 720);

X0 = 1000000L * (ProjNo + 1) + 500000L;

Y0 = 0;

xval = xval + X0;

yval = yval + Y0;

output[0] = xval;

output[1] = yval;

return output;

}

java 高斯投影_高斯投影正算公式以及java代码相关推荐

  1. java 根据圆心计算圆弧上点的经纬度_【控制测量学】-高斯投影正算公式以及java代码

    正算公式(将经纬度转化为坐标): java代码(附有源代码和修改后的代码): 源代码: /** * 由经纬度反算成高斯投影坐标 * * @param longitude * @param latitu ...

  2. 高斯投影坐标正算公式详解

    高斯投影坐标正算 高斯投影又称横轴椭圆柱等角投影. 高斯投影6度带,自0度带子午线起每隔经差6度自西向东分带,一次编号1,2,3,-.我国6度带中央子午线的经度,由69度起每隔6度而至135度,共计1 ...

  3. 小白学习python好还是java好_小白应该学Python还是Java?

    Java和Python两门语言都是目前非常热门的语言,可谓北乔峰南慕容,二者不分上下,棋逢对手.但是对于初学者来说,非常困惑,因为时间和精力有限,上手必须要先学一门,到底选那个好呢,今天3分钟带你透彻 ...

  4. cmd编译java命令_使用CMD命令编译执行java命令

    写程序时,有时候需要动态编译执行,经过各种百度及实战,总结一些使用经验. .java文件分为有包名,无包名,又分为有jar包,无jar包,是否指定jre等等. 接下来总结如下: cmd 编译执行jav ...

  5. selenium java 验证码_如何使用Selenium WebDriver和Java从图像(验证码)中读取文本

    我有注册网页,但在最后验证码显示.. 我无法从图像中读取文本.我要提一下代码和输出.. @Test public void loginTest() throws InterruptedExceptio ...

  6. 精通java图片_面试必备:详解Java I/O流,掌握这些就可以说精通了?

    Java IO概述 IO就是输入/输出.Java IO类库基于抽象基础类InputStream和OutputStream构建了一套I/O体系,主要解决从数据源读入数据和将数据写入到目的地问题.我们把数 ...

  7. 零基础可以学习java吗_零基础真的可以学习java吗?

    Java是一个比较抽象的开发语言,涉及知识点比较多,如果自学的话,可以按照五个阶段来学习,先学好基础知识,再逐步扩展,由易到难.要注意视频和书本内容相辅相成,切记不要只看视频而不忽略书本基础的知识要点 ...

  8. lr java脚本_【上海校区】 LR Java脚本编写方法

    之前在某一家银行也接触过java写的性能接口脚本,最近因项目,也需编写java接口性能测试脚本,脑袋一下懵逼了,有点不知道从何入手.随后上网查了相关资料,自己又稍微总结了一下,与大家共同分享哈~ 首先 ...

  9. 第三方工具监控java进程_前9个免费的Java进程监视工具以及如何选择一种

    第三方工具监控java进程 这样就可以运行Java代码了. 也许它甚至可以在生产服务器上运行. 当您做好工作后,我们得到了好消息和令人讨厌的消息. 令人讨厌的消息是,现在开始调试. 就是进行调试和应用 ...

  10. 银河麒麟配置java环境_中标麒麟系统上安装Java、Eclipse指南.doc

    中标麒麟系统上安装Java环境指南 Java_NeoKylin_Install_Guide 2015-01-12 修订记录 序号 版本号 日期 修订人 摘要 1 1.0 目录Content 概述 -- ...

最新文章

  1. 思科路由器ACL通配符
  2. Android中Video的三种播放方式的实现
  3. vue build text html,Vue中v-text / v-HTML使用实例代码详解_放手_前端开发者
  4. thinkphp无法加载模块解决办法
  5. mysql 查询每天 如果没有显示为0_「15」MySQL的系统信息函数
  6. java反射的编译过程_Java反射机制小结和实际操作
  7. 秒杀核心设计(减库存部分)-防超卖与高并发
  8. Linux RTC 驱动实验
  9. 面试题 17.14. 最小K个数
  10. android webview js交互 第一节 (java和js交互)
  11. OpenShift 4 Tekton (3) - 通过控制台的图形化方式配置Tekton Pipeline
  12. Windows和Mac os x一样不安全?!
  13. 面向项目(六)—— 错误(异常)信息的书写
  14. 这些小工具让你的Android开发更高效
  15. java 文件读写 中文_java读写中文文件
  16. SVO2.0 安装编译
  17. 计算机机箱最新推出的是什么架构,独特三舱位结构:LIANLI 联力 推出 PC-O12 E-ATX 全塔机箱...
  18. 利用PHP GD库生成位图
  19. 2021百度网盘网页版视频在线倍速播放
  20. OPCUA标准java实现 Milo库

热门文章

  1. Mac 上有哪些值得推荐的软件?冷门小众软件但实用
  2. cocos studio和cocosbuilder什么区别
  3. XP安全防护国际评测 360小红伞卡巴排行前三
  4. AutoCAD全面卸载的方法
  5. 传智播客javascript视频教程(杨中科)学习笔记
  6. 小米笔记本 镜像_小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版镜像下载
  7. 微信语音怎么转发给别人听_新版微信语音转发方法(微信语音怎么转发给别人听)...
  8. 用Android studio搭建沃商店SDK任意支付的配置
  9. 漏洞CNNVD-201805-248的复现与提权
  10. 安卓游戏广告加速插件_游戏加速器(强烈推荐!)[PC+安卓]