WGS84坐标 火星坐标 BD09坐标转换
// 定义一些常量
const x_PI = (3.14159265358979324 * 3000.0) / 180.0
const PI = 3.1415926535897932384626
const a = 6378245.0
const ee = 0.00669342162296594323/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 / 即百度转谷歌、高德* @param { Number } bd_lon* @param { Number } bd_lat*/
export function bd09togcj02 (bd_lon, bd_lat) {var x_pi = (3.14159265358979324 * 3000.0) / 180.0var x = bd_lon - 0.0065var y = bd_lat - 0.006var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi)var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi)var gg_lng = z * Math.cos(theta)var gg_lat = z * Math.sin(theta)return [gg_lng, gg_lat]
}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 / 即谷歌、高德 转 百度* @param { Number } lng* @param { Number } lat*/
export function gcj02tobd09 (lng, lat) {var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI)var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI)var bd_lng = z * Math.cos(theta) + 0.0065var bd_lat = z * Math.sin(theta) + 0.006return [bd_lng, bd_lat]
}/*** WGS84坐标系转火星坐标系GCj02 / 即WGS84 转谷歌、高德* @param { Number } lng* @param { Number } lat*/
export function wgs84togcj02 (lng, lat) {if (outOfChina(lng, lat)) {return [lng, lat]} else {var dlat = transformlat(lng - 105.0, lat - 35.0)var dlng = transformlng(lng - 105.0, lat - 35.0)var radlat = (lat / 180.0) * PIvar magic = Math.sin(radlat)magic = 1 - ee * magic * magicvar sqrtmagic = Math.sqrt(magic)dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)const mglat = lat + dlatconst mglng = lng + dlngreturn [mglng, mglat]}
}/*** GCJ02(火星坐标系) 转换为 WGS84 / 即谷歌高德转WGS84* @param { Number } lng* @param { Number } lat*/
export function gcj02towgs84 (lng, lat) {if (outOfChina(lng, lat)) {return [lng, lat]} else {var dlat = transformlat(lng - 105.0, lat - 35.0)var dlng = transformlng(lng - 105.0, lat - 35.0)var radlat = (lat / 180.0) * PIvar magic = Math.sin(radlat)magic = 1 - ee * magic * magicvar sqrtmagic = Math.sqrt(magic)dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)const mglat = lat + dlatconst mglng = lng + dlngreturn [lng * 2 - mglng, lat * 2 - mglat]}
}/*** 百度坐标系转wgs84坐标系* @param {*} lng* @param {*} lat*/
export function bd09towgs84 (lng, lat) {// 百度坐标系先转为火星坐标系const gcj02 = bd09togcj02(lng, lat)// 火星坐标系转wgs84坐标系const result = gcj02towgs84(gcj02[0], gcj02[1])return result
}/*** wgs84坐标系转百度坐标系* @param {*} lng* @param {*} lat*/
export function wgs84tobd09 (lng, lat) {// wgs84先转为火星坐标系const gcj02 = wgs84togcj02(lng, lat)// 火星坐标系转百度坐标系const result = gcj02tobd09(gcj02[0], gcj02[1])return result
}/*** 经度转换* @param { Number } lng* @param { Number } lat*/
function transformlat (lng, lat) {var ret =-100.0 +2.0 * lng +3.0 * lat +0.2 * lat * lat +0.1 * lng * lat +0.2 * Math.sqrt(Math.abs(lng))ret +=((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) *2.0) /3.0ret +=((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * 2.0) /3.0ret +=((160.0 * Math.sin((lat / 12.0) * PI) + 320 * Math.sin((lat * PI) / 30.0)) *2.0) /3.0return ret
}/*** 纬度转换* @param { Number } lng* @param { Number } lat*/
function transformlng (lng, lat) {var ret =300.0 +lng +2.0 * lat +0.1 * lng * lng +0.1 * lng * lat +0.1 * Math.sqrt(Math.abs(lng))ret +=((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) *2.0) /3.0ret +=((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * 2.0) /3.0ret +=((150.0 * Math.sin((lng / 12.0) * PI) +300.0 * Math.sin((lng / 30.0) * PI)) *2.0) /3.0return ret
}/*** 判断是否在国内,不在国内则不做偏移* @param {*} lng* @param {*} lat*/
function outOfChina (lng, lat) {return (lng < 72.004 || lng > 137.8347 || lat < 0.8293 || lat > 55.8271 || false)
}
WGS84坐标 火星坐标 BD09坐标转换相关推荐
- php 经纬度坐标转换 WGS84、火星坐标 (GCJ-02)、百度坐标 (BD-09)
项目有gps上报的功能, 由于前端插件问题导致大量gps定位数据转换百度坐标(BD-09)时产生极大偏移, 故需要后端做经纬度坐标转换, 看到一篇java的相关技术帖, 拿来做了修改 Ps: 坐标转换 ...
- java 经纬度坐标转换 WGS84、火星坐标 (GCJ-02)、百度坐标 (BD-09)
会有偏移,但是还能接受 WGS84 国际标准,从 GPS 设备中取出的数据的坐标系 国际地图提供商使用的坐标系 火星坐标 (GCJ-02) 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系 ...
- IOS 地球坐标-火星坐标-百度坐标 转换
如果你正需要这样的工具,保证拿过去就能用 如果你还不知道这是什么工具,我保证以后的iOS开发中肯定会用 如果你是iOS大牛,期待您能指点一下 ^_^ 好了,废话不多说了.上干货 坐标系介绍 首先介绍一 ...
- [转]地球坐标 火星坐标 百度坐标 相互转换
在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统.大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际 ...
- 地球坐标 火星坐标 百度坐标 相互转换
在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统.大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际 ...
- WGS84,GCJ02, BD09坐标转换
来源:http://www.cnblogs.com/94cool/p/4266907.html public class Gps {private double wgLat;private doubl ...
- 百度坐标 火星坐标 相互转换
private static final double X_PI = 3.14159265358979324 * 3000.0 / 180.0; private static final double ...
- 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转
为什么写这个模块 随着移动互联网的兴起,几乎每一个app都会去收集用户位置,如果恰好你在处理与地理定位相关的代码,并且不了解地理坐标系的话,肯定要被我大天朝各种坐标系搞晕.写这个模块的目的也是因为项目 ...
- B站/博客园/CSDN/知乎:@秋意正寒 地球坐标系(WGS84),火星坐标系(GCJ02), 百度坐标系(BD09)坐标转换
https://blog.csdn.net/skh2015java/article/details/68486756 聊聊GIS中那些坐标系 转载请声明到标题. B站/博客园/CSDN/知乎:@秋意正 ...
最新文章
- python编程单词排序_python 统计单词个数,并按个数与字母排序
- Symantec防病毒企业版10.1部署方法一
- React 性能优化之批量处理 unstable_batchedUpdates
- 关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const
- bzoj4602 [Sdoi2016]齿轮 边权并查集
- 【英语学习】【English L06】U06 Banking L4 I'd like to transfer some money
- Shell循环输入符合条件为止
- 计算机技术在音乐专业中的应用与探索,计算机技术在音乐教学中的应用与研究...
- HTML 网页自动刷新
- Golang获取时间戳并增加一天
- 【软件工程导论】习题集
- Unity 创建Sprite导致的内存溢出奔溃问题
- 文件已经删除,但是空间没有释放的异常
- 【NLP】第1章 什么是Transformers?
- Nordic Thingy:52 Android App 源码及APK
- Vue SPA工作原理
- 手把手教你从零跑一个Skynet
- 电子数据如何进行数据存证保全?
- 英文SEO采集伪原创软件Kontent Machine注册使用实战教程!
- POJ 1087 A Plug for UNIX 会议室插座问题 构图+最大流
热门文章
- python两种方法读取、修改文件的创建时间、修改时间、访问时间
- Winform最基础的DBHelper类
- maven打jar包,并将依赖jar打入外部lib文件中
- 怎样测试你前世是男是女的软件,缘分测试:测你与TA前世的关系是什么
- 2015 Xcode7 真机调试(开发者)以及P12配置
- SonarQube 9.x集成阿里p3c代码规范检测java代码;
- SQL Server设置周一为每周第一天
- iOS CI自动化构建:FastLane+企业重签+上传fir+jenkins
- 锐浪(Grid++Report)报表脚本通过某些字段隐藏控件
- python刷今日头条阅读量_用python3.5逛看今日头条