bd09转化为wgs84

目前合理的做法是:
1.设GPS: 116.397428,39.90923
2.经过第一次百度转换BMap.Convertor.translate();
得到point: 116.41004950566,39.916979519873
x1=116.41004950566; y1=39.916979519873
3.2步得到的point再经百度转换BMap.Convertor.translate();
得到point2: 116.42270347909,39.924613508241
x2=116.42270347909;y2=39.924613508241
4.由x1,y1,x2,y2,经公式
x=2*x1-x2;
y=2*y1-y2;
得到
x=116.39739553223
y=39.909345531505004
5.比较x,y同GPS: 116.397428,39.90923坐标发现变化不大

总结:百度坐标转GPS,x经度,y纬度:
x=2*x1-x2; y=2*y1-y2;
其中x1,y1为原始百度坐标,x,y为转化后得到的GPS坐标
### 实现BD09WGS84的坐标换 为了完成从BD09坐标系向WGS84坐标系的换,可以采用两种主要途径之一:一是通过调用在线的地图服务API来间接实现;二是利用已有的算法直接在本地计算。对于后者而言,通常会先将BD09坐标反解算回到GCJ-02坐标,再进一步处理成标准的WGS84坐标。 下面给出了一种基于Python语言的具体实施方案: ```python import math def transform_baidu_to_wgs84(lng, lat): """ 将百度坐标(BD09换为世界大地测量系统坐标(WGS84) 参数: lng (float): 百度坐标的经度部分. lat (float): 百度坐标的纬度部分. 返回: tuple: 换后的WGS84坐标对 (longitude, latitude). 注意事项: 此函数内部实现了两步变换过程——先是BD09至GCJ02,接着是从GCJ02到WGS84。 """ # 定义一些常量用于公式中的参数调整 PI = 3.14159265358979324 * 3000.0 / 180.0 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(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 _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 z = math.sqrt(lng * lng + lat * lat) - 0.00002 * math.sin(lat * PI) theta = math.atan2(lat, lng) - 0.000003 * math.cos(lng * PI) lng = z * math.cos(theta) lat = z * math.sin(theta) radLat = lat / 180.0 * PI magic = math.sin(radLat) magic = 1 - magic*magic*0.00669342162296594323 sqrtMagic = math.sqrt(magic) dLat = (_transformlat(lng - 105.0, lat - 35.0) - radLat) * 180.0 / PI dLng = (_transformlng(lng - 105.0, lat - 35.0) - lng) * 180.0 / PI mgLat = lat * 2.0 - dLat mgLng = lng * 2.0 - dLng x_pi = math.pi * 3000.0 / 180.0 x = mgLng - 0.0065 y = mgLat - 0.006 z = 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) lon = z * math.cos(theta) lat = z * math.sin(theta) return [lon, lat] # 测试数据点 test_coords = { "bd_lng": 116.404, "bd_lat": 39.915 } converted_coord = transform_baidu_to_wgs84( test_coords["bd_lng"], test_coords["bd_lat"]) print(f"WGS84 Coordinates after conversion are Lon:{converted_coord[0]}, Lat:{converted_coord[1]}") ``` 此段代码定义了一个名为`transform_baidu_to_wgs84()` 的函数,它接收两个浮点数作为输入参数,分别代表要被化的BD09坐标下的经度和纬度值,并返回一对新的数值表示对应的WGS84坐标位置[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值