热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百度坐标转wgs84_【Python与GIS】用Python将火星,百度坐标转WGS84坐标

GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系,加密方法并非线性加密ÿ

398b974dd45ec50ef70bd755622c8b5f.png

GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系,加密方法并非线性加密,每个地区偏移的都不一样。BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。

以下demo实现火星坐标系转WGS84坐标、百度坐标系转WGS84坐标,此反算适用于精度要求不高时。

import mathimport json#火星坐标系转成wgs84坐标系def gcj02towgs84(lng,lat): dlat = transformlat(lng - 105.0, lat - 35.0) dlng = transformlng(lng - 105.0, lat - 35.0) radlat = lat / 180.0 * PI magic = math.sin(radlat) magic = 1 - ee * magic * magic sqrtmagic = 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 + dlat mglng = lng + dlng return [lng * 2-mglng, lat * 2-mglat]#百度坐标系转成wgs84坐标系def baidutowgs84(lng,lat): x = lng - 0.0065; y = lat - 0.006; z = math.sqrt(x*x + y*y) - 0.00002 *math.sin(y*PI) theta = math.atan2(y,x) - 0.000003*math.cos(x*PI) gg_lng = z*math.cos(theta) gg_lat = z*math.sin(theta) return gcj02towgs84(gg_lng,gg_lat)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(abs(lng)); ret += (20.0 * math.sin(6.0 * lng * PI) + 20.0 * math.sin(2.0 * lng * PI)) * 2.0 / 3.0; ret += (20.0 * math.sin(lat * PI) + 40.0 * math.sin(lat / 3.0 * PI)) * 2.0 / 3.0; ret += (160.0 * math.sin(lat / 12.0 * PI) + 320 * math.sin(lat * PI / 30.0)) * 2.0 / 3.0; return ret;def transformlng(lng,lat): ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * math.sqrt(abs(lng)); ret += (20.0 * math.sin(6.0 * lng * PI) + 20.0 * math.sin(2.0 * lng * PI)) * 2.0 / 3.0; ret += (20.0 * math.sin(lng * PI) + 40.0 * math.sin(lng / 3.0 * PI)) * 2.0 / 3.0; ret += (150.0 * math.sin(lng / 12.0 * PI) + 300.0 * math.sin(lng / 30.0 * PI)) * 2.0 / 3.0; return ret;if __name__ == '__main__':    global a global ee global PI a = 6378245.0 ee = 0.00669342162296594323; PI = math.pi  huoxing_lon_ = 113 huoxing_lat = 32 [wgs84_lon,wgs84_lat] = gcj02towgs84(huoxing_lon_,huoxing_lat) print([wgs84_lon,wgs84_lat])

e4a1653c2bb7178c0e03ebc2177a8c1b.png




推荐阅读
author-avatar
李小白无悔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有