1. //
  2.  
  3. // Copyright (C) 1000 - 9999 Somebody Anonymous
  4.  
  5. // NO WARRANTY OR GUARANTEE
  6.  
  7. //
  8.  
  9. using System;
  10.  
  11. namespace Navi
  12.  
  13. {
  14.  
  15. class EvilTransform
  16.  
  17. {
  18.  
  19. const double pi = 3.14159265358979324;
  20.  
  21. //
  22.  
  23. // Krasovsky 1940
  24.  
  25. //
  26.  
  27. // a = 6378245.0, 1/f = 298.3
  28.  
  29. // b = a * (1 - f)
  30.  
  31. // ee = (a^2 - b^2) / a^2;
  32.  
  33. const double a = 6378245.0;
  34.  
  35. const double ee = 0.00669342162296594323;
  36.  
  37. //
  38.  
  39. // World Geodetic System ==> Mars Geodetic System
  40.  
  41. public static void transform(double wgLat, double wgLon, out double mgLat, out double mgLon)
  42.  
  43. {
  44.  
  45. if (outOfChina(wgLat, wgLon))
  46.  
  47. {
  48.  
  49. mgLat = wgLat;
  50.  
  51. mgLon = wgLon;
  52.  
  53. return;
  54.  
  55. }
  56.  
  57. double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
  58.  
  59. double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
  60.  
  61. double radLat = wgLat / 180.0 * pi;
  62.  
  63. double magic = Math.Sin(radLat);
  64.  
  65. magic = - ee * magic * magic;
  66.  
  67. double sqrtMagic = Math.Sqrt(magic);
  68.  
  69. dLat = (dLat * 180.0) / ((a * ( - ee)) / (magic * sqrtMagic) * pi);
  70.  
  71. dLon = (dLon * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);
  72.  
  73. mgLat = wgLat + dLat;
  74.  
  75. mgLon = wgLon + dLon;
  76.  
  77. }
  78.  
  79. static bool outOfChina(double lat, double lon)
  80.  
  81. {
  82.  
  83. if (lon < 72.004 || lon > 137.8347)
  84.  
  85. return true;
  86.  
  87. if (lat < 0.8293 || lat > 55.8271)
  88.  
  89. return true;
  90.  
  91. return false;
  92.  
  93. }
  94.  
  95. static double transformLat(double x, double y)
  96.  
  97. {
  98.  
  99. double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.Sqrt(Math.Abs(x));
  100.  
  101. ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;
  102.  
  103. ret += (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0;
  104.  
  105. ret += (160.0 * Math.Sin(y / 12.0 * pi) + * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0;
  106.  
  107. return ret;
  108.  
  109. }
  110.  
  111. static double transformLon(double x, double y)
  112.  
  113. {
  114.  
  115. double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.Sqrt(Math.Abs(x));
  116.  
  117. ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;
  118.  
  119. ret += (20.0 * Math.Sin(x * pi) + 40.0 * Math.Sin(x / 3.0 * pi)) * 2.0 / 3.0;
  120.  
  121. ret += (150.0 * Math.Sin(x / 12.0 * pi) + 300.0 * Math.Sin(x / 30.0 * pi)) * 2.0 / 3.0;
  122.  
  123. return ret;
  124.  
  125. }
  126.  
  127. }
  128.  
  129. }

【转】地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法 C#的更多相关文章

  1. 地球坐标系(WGS-84)转火星坐标系(GCJ)

    /** * 单点坐标纠偏 */ var pi = 3.14159265358979324; var a = 6378245.0; var ee = 0.00669342162296594323; va ...

  2. Objective-C上地球坐标系到火星坐标系转换算法

    Objective-C上地球坐标系到火星坐标系转换算法 http://blog.csdn.net/zhaoxy_thu/article/details/17033347

  3. JAVA火星坐标系、百度坐标系、84坐标系相互转换工具类

    /** * 坐标系转换工具类 */ public class PositionUtil { public static double pi = 3.1415926535897932384626; pu ...

  4. [转]iOS开发中的火星坐标系及各种坐标系转换算法

     iOS开发中的火星坐标系及各种坐标系转换算法 源:https://my.oschina.net/u/2607703/blog/619183   其原理是这样的:保密局开发了一个系统,能将实际的坐标转 ...

  5. iOS开发中的火星坐标系及各种坐标系转换算法

    原文地址:http://m.oschina.net/blog/619183?ref=myread 其原理是这样的:保密局开发了一个系统,能将实际的坐标转换成虚拟的坐标.所有在中国销售的数字地图必须使用 ...

  6. 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法

    $x_pi = 3.14159265358979324 * 3000.0 / 180.0; //火星坐标系 (GCJ-02)转百度坐标系 (BD-09)算法 function bd_encrypt($ ...

  7. GCJ-02火星坐标系和WGS-84坐标系转换关系

    GCJ-02火星坐标系和WGS-84坐标系转换关系 WGS-84:GPS坐标系 GCJ-02:火星坐标系,国测局02年发布的坐标体系,高德,腾讯等使用. BD-09:百度坐标系,百度自研,百度地图使用 ...

  8. 【PHP版】火星坐标系 (GCJ-02) 与百度坐标系 (BD-09ll)转换算法

    首先感谢java版作者@宋宋宋伟,java版我是看http://blog.csdn.net/coolypf/article/details/8569813 然后根据java代码修改成了php代码. & ...

  9. WGS84坐标系图层转火星坐标系(是整个图层转哟,不是转单点坐标)

    开篇唠叨(着急的略过) 大天朝“火星坐标系”小科普:是一种国家保密插件,对真实坐标系统进行人为的加偏处理,将真实的坐标加密成虚假的坐标,加密后的坐标被称为火星坐标系统.所有的电子地图所有的导航设备,都 ...

  10. (数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换

    一.简介 主流被使用的地理坐标系并不统一,常用的有WGS84.GCJ02(火星坐标系).BD09(百度坐标系)以及百度地图中保存矢量信息的web墨卡托,本文利用Python编写相关类以实现4种坐标系统 ...

随机推荐

  1. 每日一题-——LeetCode(807)保持城市天际线

    题目描述: 在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度. 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度. 高度 0 也被认为是建筑物.最后,从新数组的所有 ...

  2. 越狱后cydia无法联网

    0x:卸载 cydia installer 1x:卸载后重启手机 2x:再次h3lix

  3. IDEA类的旁边有个对勾

    说明该类添加到IDEA的书签栏去了,在IDEA左侧下方有个Favorites选项,在这里的BookMarks中可以看到这个类. 取消方法: 选中这个类,按F11即可取消

  4. 9.1: 请每个小组在 cnblogs.com 上面创建团队博客,第一个博客把小组成员都介绍一下 #团队博客作业1------------------答题者:徐潇瑞

    大家好,我们这个团队的名字叫14组之家,之所以这么叫,因为我们是在章亦葵老师的现代软件工程课上成立为14组,而且我们每个组员在这个小家庭中都感受到温暖,我们互相协作,互相配合,来完成我们的任务. 首先 ...

  5. js依赖mui.css生成图片验证码

    js依赖mui.css生成图片验证码 相关css和js引入路径 https://cdnjs.cloudflare.com/ajax/libs/mui/3.7.1/css/mui.css https:/ ...

  6. ES6 Class(类)的继承与常用方法

    一.ES6 类的定义 ES5 构造函数的写法: function Point(x, y) { this.x = x; this.y = y; } ES6 引入了 Class(类),通过class关键字 ...

  7. spring框架中的一个字符串的工具类

    stringutils.hasText("字符串") 如果字符串里面的值为null, "", "   ",那么返回值为false:否则为tr ...

  8. burp插件debug

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2. ...

  9. python开发全自动网站链接主动提交百度工具

    自己网站因数据比较多,趁晚上没事就写了一个通过python爬取url自动提交给百度,实现网站全站提交的思路,代码实现很简单,因为编写时间仓储,难免有些bug,可以放在服务器上配置下定时爬取提交. im ...

  10. [Javascript] Run asynchronous functions in sequence using reduce

    This can be handy if you have a rate limit on API requests or if you need to pass the result of each ...