关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码

2020年08月10日

阅读数:31

这篇文章主要向大家介绍关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

using System;

namespace WindowsFormsApplication3

{

class EvilTransform

{

const double pi = 3.14159265358979324;

const double x_pi = 3.14159265358979324 * 3000.0 / 180.0;

public struct BDcoor

{

public double bd_lon { get; set; }

public double bd_lat { get; set; }

}

public struct HDCoor

{

public double gg_lon { get; set; }

public double gg_lat { get; set; }

}

//

// Krasovsky 1940

//

// a = 6378245.0, 1/f = 298.3

// b = a * (1 - f)

// ee = (a^2 - b^2) / a^2;

const double a = 6378245.0;

const double ee = 0.00669342162296594323;

//

// World Geodetic System ==> Mars Geodetic System

public void transform(double wgLat, double wgLon, out double mgLat, out double mgLon)

{

if (outOfChina(wgLat, wgLon))

{

mgLat = wgLat;

mgLon = wgLon;

return;

}

double dLat = transformLat(wgLon - 105.0, wgLat - 35.0);

double dLon = transformLon(wgLon - 105.0, wgLat - 35.0);

double radLat = wgLat / 180.0 * pi;

double magic = Math.Sin(radLat);

magic = 1 - ee * magic * magic;

double sqrtMagic = Math.Sqrt(magic);

dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);

dLon = (dLon * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);

mgLat = wgLat + dLat;

mgLon = wgLon + dLon;

}

static bool outOfChina(double lat, double lon)

{

if (lon < 72.004 || lon > 137.8347)

return true;

if (lat < 0.8293 || lat > 55.8271)

return true;

return false;

}

static double transformLat(double x, double y)

{

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));

ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;

ret += (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0;

ret += (160.0 * Math.Sin(y / 12.0 * pi) + 320 * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0;

return ret;

}

static double transformLon(double x, double y)

{

double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.Sqrt(Math.Abs(x));

ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;

ret += (20.0 * Math.Sin(x * pi) + 40.0 * Math.Sin(x / 3.0 * pi)) * 2.0 / 3.0;

ret += (150.0 * Math.Sin(x / 12.0 * pi) + 300.0 * Math.Sin(x / 30.0 * pi)) * 2.0 / 3.0;

return ret;

}

///

///

///

///

///

///

public BDcoor bd_encrypt(double gg_lat, double gg_lon)

{

double x = gg_lon, y = gg_lat;

double z = Math.Sqrt(x * x + y * y) + 0.00002 * Math.Sin(y * x_pi);

double theta = Math.Atan2(y, x) + 0.000003 * Math.Cos(x * x_pi);

BDcoor bd = new BDcoor();

bd.bd_lon = z * Math.Cos(theta) + 0.0065;

bd.bd_lat = z * Math.Sin(theta) + 0.006;

return bd;

}

///

///

///

///

///

///

public HDCoor bd_decrypt(double bd_lat, double bd_lon)

{

double x = bd_lon - 0.0065, y = bd_lat - 0.006;

double z = Math.Sqrt(x * x + y * y) - 0.00002 * Math.Sin(y * x_pi);

double theta = Math.Atan2(y, x) - 0.000003 * Math.Cos(x * x_pi);

HDCoor hd = new HDCoor();

hd.gg_lon = z * Math.Cos(theta);

hd.gg_lat = z * Math.Sin(theta);

return hd;

}

}

}

c语言谷歌坐标转百度坐标,关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码...相关推荐

  1. js百度地图获取当前定位经纬度及省市区

    首先需要引入百度地图api 和jq <script type="text/javascript" src="https://api.map.baidu.com/ap ...

  2. 通达信指标能用c语言编写吗_翔博精选指标看长做短,引用周线数据(通达信公式 副图 源码 测试图)...

    问题:怎样才能每天都收到这类文章! 答案:只需点击上方<翔博软件工作室> 做价值的传播者,一路同行,一起成长 免费指标和实战干货持续更新中,欢迎关注 点赞 收藏视频号. 公式源码 看长,故 ...

  3. 感应门铃的c语言程序,基于STM32单片机智能门禁门铃热释人体感应光照报警+RFID门禁电磁锁设计-(原理图+程序源码)...

    视频:https://v.youku.com/v_show/id_XNDc2NDMwNDQzMg==.html?spm=a2hzp.8253869.0.0 2018-644.STM32成品+RFID设 ...

  4. Android百度地图之位置定位和附近查找代码简单实现 (上)

    很长时间没有做Android相关知识了,闲暇之余再弄了弄最新的百度地图API,主要是进行百度地图附近餐馆查找功能来练练手,同时熟悉下最新的API教程.文章比较基础,也希望对你有所帮助~参考前文:   ...

  5. html5 geolocation 百度地图,html5 geolocation配合百度地图api实现定位

    1.了解html5 geolocation HTML5 Geolocation(地理定位)用于定位用户的位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的.=> 使用 ...

  6. python百度云盘搜索引擎_2016百度云网盘搜索引擎源码,附带Python爬虫+PHP网站+Xunsearch搜索引擎...

    品牌: 其他 语言: PHP 数据库: Mysql 源文件: 完全开源(含全部源文件) 授权: 免授权 规格: 整站源码 移动端: 无移动端 安装服务: 收费安装(另补差价) 操作系统: Window ...

  7. 搜索巨头转身:Google向左、百度向右

    谷歌日前宣布了一个重大事项:未来将以Alphabet(字母表)的品牌亮相,谷歌将成为这家新的控股公司的全资子公司,与Google并列的还有健康.投资.Google X.Nest诸多新兴业务.虽然本质只 ...

  8. 百度小程序源码php_dedecms织梦小程序插件万能api接口插件(支持百度微信小程序)...

    dedecms织梦小程序插件万能api接口,让你无需有php或sql基础,不需要依赖任何第三方网站授权,后台一键安装,小程序分分钟配置完成,让你拥有真正属于自己的小程序!支持gbk和utf版 dede ...

  9. 第三方 搜索 聚合 百度 php,百度小偷-搜索引擎聚合源码-寄生虫源码

    百度搜索引擎聚合源码         百度小偷 本程序为单页PHP源码新版  带伪静态规则 开源无加密.便于修改二次开发 200KB左右,短小精悍,自适应PC wap 平板 全自动式搜索引擎聚合源码 ...

最新文章

  1. Spark Streaming 编程新手入门指南
  2. 为什么PUE只说明了数据中心能效的一部分?
  3. SDNU 1300.转圈游戏(快速幂)
  4. c# Invoke和BeginInvoke 区别
  5. BeetleX轻松搭建HTTP和Weboskcet网关
  6. java 上传远程图片,java上传图片到另一台服务器上,怎么解决
  7. jsk Star War (线段树维护区间最小最大值 + 二分)
  8. leetcode1083. 销售分析 II(SQL)
  9. Python使用socket读取网页源代码实现简单爬虫程序
  10. 1061. 判断题(15)-PAT乙级真题
  11. 第四章Python数值计算工具 ——Numpy
  12. jQuery 的 ajax
  13. 隐藏你不想要的:Bartender 4 for Mac菜单栏应用管理软件
  14. java的睡眠方式有几种_java的几种定时任务
  15. 移动位置应用的推动者——ArcGIS移动产品家族
  16. 正确编译差分包签名(MTK系统)
  17. 二十余岁时的社会观(一)
  18. 单U盘 clonezilla 克隆ubuntu16.04系统
  19. 糖友日常生活需要注意什么
  20. hive数仓、数据中台数据核对的方法

热门文章

  1. 基于spring boot框架的商铺租赁系统的设计与实现
  2. 使用exe4j将java程序打包成exe可执行文件遇到的问题
  3. jsp页面获取服务器Ip地址
  4. 从出生到18岁生日总天数(C++)
  5. 项目:基于百度API智能语音家居控制系统
  6. STM32F103ZET6点亮板载LED灯
  7. unity围绕物体旋转加角度限制
  8. Windows server 2008搭建pptp
  9. 关于PPP拨号 和 AT指令实现GPRS模块联网的疑问
  10. Vysor PRO 破解方法