wgs84:国家默认标准坐标

/gcj02:火星坐标

/bd09:百度坐标

转换方法:

Gps实体

public class Gps {

public double wgLat;

public double wgLon;

public Gps(double wgLat, double wgLon) {

setWgLat(wgLat);

setWgLon(wgLon);

}

public double getWgLat() {

return wgLat;

}

public void setWgLat(double wgLat) {

this.wgLat = wgLat;

}

public double getWgLon() {

return wgLon;

}

public void setWgLon(double wgLon) {

this.wgLon = wgLon;

}

@Override

public String toString() {

return wgLat + "," + wgLon;

}

}

经纬度转换

public class PositionUtil {

//转换火星坐标密钥

public double pi = 3.1415926535897932384626;

public double a = 6378245.0;

public double ee = 0.00669342162296594323;

/**

* 84 to 火星坐标系 (GCJ-02) World Geodetic System ==> Mars Geodetic System

*

* @param lat

* @param lon

* @return

*/

public Gps gps84_To_Gcj02(double lat, double lon) {

if (outOfChina(lat, lon)) {

return null;

}

double dLat = transformLat(lon - 105.0, lat - 35.0);

double dLon = transformLon(lon - 105.0, lat - 35.0);

double radLat = lat / 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);

double mgLat = lat + dLat;

double mgLon = lon + dLon;

return new Gps(mgLat, mgLon);

}

public boolean 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;

}

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

}

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

}

}

c语言gps经纬度转换程序,GPS经纬度坐标的转换相关推荐

  1. python 实现经纬度与大地2000坐标的转换

    python 实现经纬度与大地2000坐标的转换 -- coding: utf-8 -- import math 圆周率π pi = 3.1415926535897932384626 圆周率转换量 x ...

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

    关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码 2020年08月10日 阅读数:31 这篇文章主要向大家介绍关于GPS定位经纬度到谷歌(google)坐标以及百度(百 ...

  3. c语言数组124048,根据GPS经纬度判断当前所属的市区

    这个事情分两步走 1. 拿到行政区划的地理围栏数据 2. 根据GPS定位判断一个点是否落在地理围栏的多边形区域里. 1. 获取行政区划的地理围栏数据可以利用百度API.打开以前我的一个例子在chrom ...

  4. APP Inventor中如何利用GPS经纬度计算GPS距离、速度、方向

         最近有空时研究了一下MIT APP InVentor,这是一个原来google验室的项目,目的是为了给Andriod APP的开发者提供一种简便快捷的开发模式,但后来该项目被停止,2012年 ...

  5. 真实经纬度(gps)转成百度坐标的js方法

    转:http://www.360doc.com/content/16/0320/14/18636294_543805051.shtml 结果图: <!DOCTYPE html> <h ...

  6. flutter插件开发学习之旅(4)-------检测GPS状态,打开GPS和显示经纬度实战

    检测GPS状态,打开GPS和显示经纬度实战 前言 准备工具 实战开始 前言 经过上一篇的学习,大家学习到蓝牙的实战,这节课我们给大家分享Flutter调用原生API实现检测手机GPS状态和打开GPS; ...

  7. 开源一个安信可A9g小项目微信小程序定位器项目②GPS模块如何定位经纬度并且上报到MQTT服务器,实现远程查看模块的经纬度;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 如何在windows10上环境搭建,编译烧录代码固件,查看运行 ...

  8. ecef转换经纬度坐标 c语言代码,WGS84和ECEF坐标的转换

    #include "stdafx.h" #include #define  PI  3.141592653 /* 该程序根据GPS.G1-X-00006.pdf文档,实现了WGS8 ...

  9. C#语言平面坐标计算,平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度...

    平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度 平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度 53950.65966 98691.8174 53978.58712 9 ...

  10. android gps 火星坐标,GPS真实坐标与火星地图坐标/百度地图坐标的转换

    #include #include #include static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; HardwareSerial ss( ...

最新文章

  1. LeetCode 452 Minimum Number of Arrows to Burst Balloons(贪心法)
  2. python数据动画_[转载]Maya使用Python获取动画每帧的rotation数据
  3. redis创建集群报错can‘t connect to node 192.168.163.203
  4. 使用Okta的单点登录保护您的Vert.x服务器
  5. 【引用】如何结束线程运行(转)
  6. MyBatis Invalid bound statement (not found)问题 -- 记一次与空气的斗智斗勇
  7. Linux0.11 kernel/exit.c中的free_page_tables()
  8. 一个基于运气的数据结构,你猜是啥?
  9. Cesium:加载json数据
  10. HTTP权威指南 文字版 带目录
  11. linux更改文件系统格式,只安装Linux系统,把硬盘全部格式化成Linux文件系统
  12. DHT11温湿度模块
  13. 魏尔斯特拉斯函数 matlab,Applied Numerical Linear Algebra - James W. Demmel
  14. 搜狗AI走向产业改造:纵横捭阖术与录音笔的新声态
  15. 刷 LeetCode 吃力正常吗?
  16. 算法导论——钢条切割问题(C语言)
  17. 量化金融-分类数据的检验
  18. 《筱静观察》第三季第2期丨区块链在金融开放与监管中的作用
  19. 适用场景:All kinds of GCs
  20. dB dBm dBFs 理解

热门文章

  1. python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
  2. 紧密中心性(closeness centrality)
  3. arcgis分析道路节点中心性degree,closeness,betweenness
  4. 引入阿里icon库的方法(font-class 引用)
  5. 文件后缀和相应的文件类型,打开方法参考大全
  6. lcx端口转发linux_LCX 端口重定向本质以及在linux下的实现
  7. UML之Astah的基本使用教程-1
  8. 英语口语测试评分软件,7款超人气英语口语app深度测评
  9. Java 9 Module的特性以及解决的问题
  10. 数据结构课程设计(银行叫号机)