运营商基站数据混乱,考虑GPS位置编码完善基站数据。
一、百度地图开放平台
百度地图API:https://lbsyun.baidu.com/
二、使用步骤
1.申请AK
2.全球逆地理编码的使用
全球逆地理编码服务是一类Web API接口服务;
逆地理编码服务提供将坐标点(经纬度)转换为对应位置信息(如所在行政区划,周边地标点分布)功能。
服务同时支持全球行政区划位置描述及周边地标POI数据召回(包括中国在内的全球200多个国家地区);
代码单个案例测试
AK = '********'
import requests
address="32.01765,112.13633"
print(address,type(address))
url = 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=%s&output=json&coordtype=wgs84ll&location=%s&extensions_town=%s'% (AK, address,'true')
respose = requests.get(url)
answer = respose.json()
print(answer)
baidu_cell_name = answer['result']['formatted_address']
baidu_adcode = answer['result']['addressComponent']['adcode']
baidu_district = answer['result']['addressComponent']['district']
baidu_town_code = answer['result']['addressComponent']['town_code']
baidu_town = answer['result']['addressComponent']['town']
baidu_street = answer['result']['addressComponent']['street']
print(baidu_adcode, baidu_district, baidu_town_code, baidu_town, baidu_street)
代码批量更新
AK = '*'
def sql():
#conn = pymysql.connect('10.36.152.*', 'root', '*', 'activity_temp') # 目标库
conn = cx_Oracle.connect('xy_report', '*', '*:50000/*') # 源库
cursor = conn.cursor()
sql_select = "SELECT distinct longitude,latitude FROM xy_jz_detail where baidu_town is null"
cursor.execute(sql_select)
data = cursor.fetchall()
for pos in data:
print(pos[0], pos[1])
address = "" + str(pos[1]) + "," + str(pos[0])
url = 'https://api.map.baidu.com/reverse_geocoding/v3/?ak=%s&output=json&coordtype=wgs84ll&location=%s&extensions_town=%s' % (AK, address, 'true')
respose = requests.get(url)
answer = respose.json()
baidu_cell_name = answer['result']['formatted_address']
baidu_adcode = answer['result']['addressComponent']['adcode']
baidu_district = answer['result']['addressComponent']['district']
baidu_town_code = answer['result']['addressComponent']['town_code']
baidu_town = answer['result']['addressComponent']['town']
baidu_street = answer['result']['addressComponent']['street']
print(baidu_adcode, baidu_adcode, baidu_district, baidu_town_code, baidu_town, baidu_street)
sql_update = "UPDATE xy_jz_detail set baidu_adcode =" + "'" + str(baidu_adcode) + "', " \
"baidu_district =" + "'" + str(baidu_district) + "', " \
"baidu_town_code =" + "'" + str(baidu_town_code) + "', " \
"baidu_town =" + "'" + str(baidu_town) + \
"' where longitude ='" + pos[0] + "' and latitude ='" + pos[1] + "'and baidu_town is null "
cursor.execute(sql_update)
conn.commit()
cursor.close()
conn.close()
sql()