WGS-84:  GPS坐标系,国际标准,GPS模块使用。
GCJ-02:   火星坐标系,国测局坐标系,谷歌、高德、腾讯等使用。
BD-09:     百度坐标系,百度地图使用。

GCJ-02 转WGS-84公式:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import json
import requests
import mathkey = 'your key here'  # 这里填写你的百度开放平台的key
x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # 长半轴
ee = 0.00669342162296594323  # 扁率def geocode(address):"""利用百度geocoding服务解析地址获取位置坐标:param address:需要解析的地址:return:"""geocoding = {'s': 'rsv3','key': key,'city': '全国','address': address}res = requests.get("http://restapi.amap.com/v3/geocode/geo", params=geocoding)if res.status_code == 200:json = res.json()status = json.get('status')count = json.get('count')if status == '1' and int(count) >= 1:geocodes = json.get('geocodes')[0]lng = float(geocodes.get('location').split(',')[0])lat = float(geocodes.get('location').split(',')[1])return [lng, lat]else:return Noneelse:return Nonedef gcj02tobd09(lng, lat):"""火星坐标系(GCJ-02)转百度坐标系(BD-09)谷歌、高德——>百度:param lng:火星坐标经度:param lat:火星坐标纬度:return:"""z = math.sqrt(lng * lng + lat * lat) + 0.00002 * math.sin(lat * x_pi)theta = math.atan2(lat, lng) + 0.000003 * math.cos(lng * x_pi)bd_lng = z * math.cos(theta) + 0.0065bd_lat = z * math.sin(theta) + 0.006return [bd_lng, bd_lat]def bd09togcj02(bd_lon, bd_lat):"""百度坐标系(BD-09)转火星坐标系(GCJ-02)百度——>谷歌、高德:param bd_lat:百度坐标纬度:param bd_lon:百度坐标经度:return:转换后的坐标列表形式"""x = bd_lon - 0.0065y = bd_lat - 0.006z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * x_pi)theta = math.atan2(y, x) - 0.000003 * math.cos(x * x_pi)gg_lng = z * math.cos(theta)gg_lat = z * math.sin(theta)return [gg_lng, gg_lat]def wgs84togcj02(lng, lat):"""WGS84转GCJ02(火星坐标系):param lng:WGS84坐标系的经度:param lat:WGS84坐标系的纬度:return:"""if out_of_china(lng, lat):  # 判断是否在国内return lng, latdlat = transformlat(lng - 105.0, lat - 35.0)dlng = transformlng(lng - 105.0, lat - 35.0)radlat = lat / 180.0 * pimagic = math.sin(radlat)magic = 1 - ee * magic * magicsqrtmagic = math.sqrt(magic)dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)mglat = lat + dlatmglng = lng + dlngreturn [mglng, mglat]def gcj02towgs84(lng, lat):"""GCJ02(火星坐标系)转GPS84:param lng:火星坐标系的经度:param lat:火星坐标系纬度:return:"""if out_of_china(lng, lat):return lng, latdlat = transformlat(lng - 105.0, lat - 35.0)dlng = transformlng(lng - 105.0, lat - 35.0)radlat = lat / 180.0 * pimagic = math.sin(radlat)magic = 1 - ee * magic * magicsqrtmagic = math.sqrt(magic)dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)mglat = lat + dlatmglng = lng + dlngreturn [lng * 2 - mglng, lat * 2 - mglat]def transformlat(lng, lat):ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + \0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(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 retdef transformlng(lng, lat):ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + \0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(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 retdef out_of_china(lng, lat):"""判断是否在国内,不在国内不做偏移:param lng::param lat::return:"""if lng < 72.004 or lng > 137.8347:return Trueif lat < 0.8293 or lat > 55.8271:return Truereturn Falseif __name__ == '__main__':lng = 128.543lat = 37.065result1 = gcj02tobd09(lng, lat)result2 = bd09togcj02(lng, lat)result3 = wgs84togcj02(lng, lat)result4 = gcj02towgs84(lng, lat)result5 = geocode('北京市朝阳区朝阳公园')print(result1, '\n', result2, '\n', result3, '\n', result4, '\n', result5)

举例说明:

天安门
GCJ-02: 116.397477,39.908692
转换为WGS-84:116.39123343289631 39.9072885060602

 参考:

https://github.com/wandergis/coordTransform_py

GPS坐标系(WGS84)、火星坐标系(GCJ02)、百度坐标系(BD-09)的相互转换相关推荐

  1. 百度地图(BD-09)坐标系和高德(GCJ-02)坐标系的相互转换(PHP版)

    简单介绍一下常见的地理经纬度坐标系: WGS-84坐标系: 是国际标准坐标系,GPS坐标(Google Earth使用.或者GPS模块). GCJ-02坐标系: 火星坐标系,GCJ-02是由中国国家测 ...

  2. WGS84地球坐标系,GCJ02火星坐标系,BD09百度坐标系简介与转换,mybatis字段映射原理

    1.各坐标系简介 2.各坐标系转换 2.1坐标点实体类 2.2各坐标系转换工具类 3.测试 1.各坐标系简介 WGS84坐标系 即地球坐标系,国际上通用的坐标系. 设备一般包含GPS芯片或者北斗芯片获 ...

  3. 各种经纬度坐标系转换-百度坐标系、火星坐标系、国际坐标系

    各种经纬度坐标系转换-百度坐标系.火星坐标系.国际坐标系 (文章代码参考网上 测试没什么问题, 汇总整理希望对大家有帮助-dou )WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全 ...

  4. GIS数据格式坐标转换(地球坐标WGS84、GCJ-02、火星坐标、百度坐标BD-09、国家大地坐标系CGCS2000)

    文章目录 前言 一.坐标系 1.地球坐标 (WGS84) 2.国测局坐标系(GCJ-02.火星坐标系) 3.百度坐标(BD-09) 4.国家大地2000坐标系(CGCS2000) 二.百度坐标系(BD ...

  5. 地图定位偏移以及坐标系转换(二)-不同坐标系的转换

    不同坐标系转换 // 定义一些常量 const x_PI = 3.14159265358979324 * 3000.0 / 180.0 const PI = 3.1415926535897932384 ...

  6. 地球坐标、 火星坐标、百度坐标转换

    地图的坐标系介绍 地球坐标 (WGS84) 国际标准,从 GPS 设备中取出的数据的坐标系 国际地图提供商使用的坐标系 火星坐标 (GCJ-02)也叫国测局坐标系 中国标准,从国行移动设备中定位获取的 ...

  7. STM32开发 -- 地球坐标系(WGS84),火星坐标系(GCJ02), 百度坐标系(BD09)坐标转换

    如需转载请注明出处:https://juyou.blog.csdn.net/article/details/99599071 STM32开发 – GPS模块开发详解 最后有提到一下: WGS84坐标系 ...

  8. GPS坐标系转换(标准坐标系WGS84转GCJ-02火星坐标系)

    GPS坐标系转换(标准坐标系WGS84转GCJ-02火星坐标系) 坐标系简介 WGS-84 标准坐标系 GCJ-02 - 国测局坐标 BD-09 - 百度坐标系 干货前的说明 WGS84转GCJ-02 ...

  9. GCJ-02火星坐标系、BD-09百度坐标系和WGS-84坐标系转换

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

最新文章

  1. FPGA之道(30)编写自己的vhdl库文件
  2. mysql内连接简写_技术分享 | MySQL 的 join_buffer_size 在内连接上的应用
  3. php反序列化漏洞原理,PHP反序列化原理及漏洞解析
  4. python发送json数据_在Websockets上发送JSON
  5. 软件测试之控制流图以及环形复杂度独立路径求解问题
  6. click 点击图片不起作用_JavaScript 练手小案例:基于SVG的图片切换效果
  7. mysql 怎么查询慢sql语句_如何优化MySQL中查询慢的SQL语句啊?
  8. C语言ctype.h库
  9. 手稿生成 HTML 代码 SketchCode
  10. 聊聊 Java 面试的一些坑
  11. Android自定义View研究(六)--View中的原点坐标相关问题
  12. html 怎么做图标在圆圈上旋转,纯CSS3图标旋转效果
  13. HSB”、lab、CMYK、RGB有什么区别
  14. 小米路由器r2d_小米路由器R2D固件(路由器刷机更新工具)V2.24.11 免费版
  15. jeecgboot开发经验过程
  16. 数据库cosc2406-2407辅导week10-quiz-Transactions and Concurrency
  17. Servlet常见错误 404错误 405错误 500错误等。解决方法
  18. PS 2019 | Photoshop CC 2019 的安装激活
  19. Keras中predict()方法和predict_classes()方法的区别
  20. 国标GB28181协议视频智能分析平台EasyCVR,构建智慧企业AR云景解决方案

热门文章

  1. 菜鸟也疯狂之外观模式
  2. 【进程管理】进程 P1、P2 、P3、P4 和 P5 的前趋图如下所示:
  3. Server certificate verification failed: certificate issued for a different hostn
  4. lombok之@NonNull注解
  5. 可视化编程和低代码编程
  6. 文档转换python代码
  7. 泰坦视频帧加密播放器
  8. java基础之BitSet(解析)
  9. matlab怎么加入快捷方式,Matlab 2014a添加桌面快捷方式(ubuntu14.04 kylin)
  10. 关于STM32上电按下复位键时串口输出FF