利用百度地图坐标转换API实现gcj02转bd09

百度地图坐标转换API

功能

将常用的非百度坐标转换成百度地图中使用的坐标,如:GPS设备获取的坐标、google地图坐标、soso地图坐标、amap地图坐标、mapbar地图坐标等

特点

  1. 以HTTP形式提供坐标转换服务
  2. 支持批量坐标转化,一次最多可转换100个坐标点。
  3. 转化后的坐标可以在百度地图JavaScript API、车联网API、静态图API、web服务API等产品中使用

服务地址

  • http://api.map.baidu.com/geoconv/v1/?
  • 组成说明:
    • 域名:api.map.baidu.com
    • 服务名:geoconv
    • 服务版本号:v1

服务参数说明

利用百度地图坐标转换API实现gcj02转bd09_第1张图片

返回值说明

利用百度地图坐标转换API实现gcj02转bd09_第2张图片

状态码说明

利用百度地图坐标转换API实现gcj02转bd09_第3张图片

使用Python3.5编写脚本调用API实现坐标转换

import pandas as pd
from urllib.request import urlopen
import json

# 需要转换的坐标
datas = pd.DataFrame({'lng_gcj02':[120.67087,120.657803,120.659898,120.682615],
                        'lat_gcj02':[28.01759,28.010946,28.035593,27.994313]},
                     columns=['lng_gcj02','lat_gcj02'])
print('需要转换的gcj02经纬度数据如下:')
datas
利用百度地图坐标转换API实现gcj02转bd09_第4张图片
def gcj02_to_bd09(datas):
    
    # 在数据集中添加[lng_bd09 ,lat_bd09] 保存转换结果
    datas['lng_bd09'] = 0 
    datas['lat_bd09'] = 0
    
    for i in range(len(gcj02_lng_lat)):
        coords = str(datas['lng_gcj02'][i])+','+str(datas['lat_gcj02'][i])
        url = 'http://api.map.baidu.com/geoconv/v1/?coords='+coords+'&ak=9KtraRRDZT8xnAoVe3o41wGGgy4X3rMW'
        try:    
            with urlopen(url,timeout=3) as html:
                http_info = html.info()
                raw_data = html.read().decode(http_info.get_content_charset())
            data = json.loads(raw_data)
            datas.iloc[i,2] = data['result'][0]['x']
            datas.iloc[i,3] = data['result'][0]['y']
        except:
            print('转换失败:'+coords)
    return datas

print('转换结果如下:')
gcj02_to_bd09(datas)
利用百度地图坐标转换API实现gcj02转bd09_第5张图片

你可能感兴趣的:(利用百度地图坐标转换API实现gcj02转bd09)