c语言gps经纬度转换程序,GPS经纬度坐标的转换
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经纬度坐标的转换相关推荐
- python 实现经纬度与大地2000坐标的转换
python 实现经纬度与大地2000坐标的转换 -- coding: utf-8 -- import math 圆周率π pi = 3.1415926535897932384626 圆周率转换量 x ...
- c语言谷歌坐标转百度坐标,关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码...
关于GPS定位经纬度到谷歌(google)坐标以及百度(百度)坐标的转换c#源码 2020年08月10日 阅读数:31 这篇文章主要向大家介绍关于GPS定位经纬度到谷歌(google)坐标以及百度(百 ...
- c语言数组124048,根据GPS经纬度判断当前所属的市区
这个事情分两步走 1. 拿到行政区划的地理围栏数据 2. 根据GPS定位判断一个点是否落在地理围栏的多边形区域里. 1. 获取行政区划的地理围栏数据可以利用百度API.打开以前我的一个例子在chrom ...
- APP Inventor中如何利用GPS经纬度计算GPS距离、速度、方向
最近有空时研究了一下MIT APP InVentor,这是一个原来google验室的项目,目的是为了给Andriod APP的开发者提供一种简便快捷的开发模式,但后来该项目被停止,2012年 ...
- 真实经纬度(gps)转成百度坐标的js方法
转:http://www.360doc.com/content/16/0320/14/18636294_543805051.shtml 结果图: <!DOCTYPE html> <h ...
- flutter插件开发学习之旅(4)-------检测GPS状态,打开GPS和显示经纬度实战
检测GPS状态,打开GPS和显示经纬度实战 前言 准备工具 实战开始 前言 经过上一篇的学习,大家学习到蓝牙的实战,这节课我们给大家分享Flutter调用原生API实现检测手机GPS状态和打开GPS; ...
- 开源一个安信可A9g小项目微信小程序定位器项目②GPS模块如何定位经纬度并且上报到MQTT服务器,实现远程查看模块的经纬度;
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 如何在windows10上环境搭建,编译烧录代码固件,查看运行 ...
- ecef转换经纬度坐标 c语言代码,WGS84和ECEF坐标的转换
#include "stdafx.h" #include #define PI 3.141592653 /* 该程序根据GPS.G1-X-00006.pdf文档,实现了WGS8 ...
- C#语言平面坐标计算,平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度...
平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度 平面坐标转化经纬度,求高手给C# 方法,将下列坐标转化成经纬度 53950.65966 98691.8174 53978.58712 9 ...
- android gps 火星坐标,GPS真实坐标与火星地图坐标/百度地图坐标的转换
#include #include #include static const uint32_t GPSBaud = 9600; TinyGPSPlus gps; HardwareSerial ss( ...
最新文章
- LeetCode 452 Minimum Number of Arrows to Burst Balloons(贪心法)
- python数据动画_[转载]Maya使用Python获取动画每帧的rotation数据
- redis创建集群报错can‘t connect to node 192.168.163.203
- 使用Okta的单点登录保护您的Vert.x服务器
- 【引用】如何结束线程运行(转)
- MyBatis Invalid bound statement (not found)问题 -- 记一次与空气的斗智斗勇
- Linux0.11 kernel/exit.c中的free_page_tables()
- 一个基于运气的数据结构,你猜是啥?
- Cesium:加载json数据
- HTTP权威指南 文字版 带目录
- linux更改文件系统格式,只安装Linux系统,把硬盘全部格式化成Linux文件系统
- DHT11温湿度模块
- 魏尔斯特拉斯函数 matlab,Applied Numerical Linear Algebra - James W. Demmel
- 搜狗AI走向产业改造:纵横捭阖术与录音笔的新声态
- 刷 LeetCode 吃力正常吗?
- 算法导论——钢条切割问题(C语言)
- 量化金融-分类数据的检验
- 《筱静观察》第三季第2期丨区块链在金融开放与监管中的作用
- 适用场景:All kinds of GCs
- dB dBm dBFs 理解
热门文章
- python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
- 紧密中心性(closeness centrality)
- arcgis分析道路节点中心性degree,closeness,betweenness
- 引入阿里icon库的方法(font-class 引用)
- 文件后缀和相应的文件类型,打开方法参考大全
- lcx端口转发linux_LCX 端口重定向本质以及在linux下的实现
- UML之Astah的基本使用教程-1
- 英语口语测试评分软件,7款超人气英语口语app深度测评
- Java 9 Module的特性以及解决的问题
- 数据结构课程设计(银行叫号机)