zoukankan      html  css  js  c++  java
  • 调用百度API将地名转为经纬度

    最近做一道数据科学竞赛题,特征中有城市名和地名,需要转为经纬度来使用

    故用python写了一个地名转经纬度的脚本,调用了百度地图的API,key在百度地图开放平台上申请

    申请key的地方:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

    import json
    # import urllib#这么用会有问题
    from urllib.request import urlopen,quote

    def p2l(name):
    # 1、设置url和3个参数(输出格式,key,要翻译的地址)
    url = 'http://api.map.baidu.com/geocoder/v2/'
    output = 'json'
    ak = 'sXZHPZahdMeK3Gy3uC7ZeRQrVbZDnP1G'
    address = quote(name)

    # 2、拼接get请求(url?参数1=值1&参数2=值2&参数3=值3)
    request = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak

    # 3、urlopen发送请求,获得response
    response_file = urlopen(request)

    # 4、读取response字符串
    response_str = response_file.read().decode()

    # 5、str转json
    response_json = json.loads(response_str)
    print(response_json)

    # 6、读json,
    lat=response_json['result']['location']['lat']
    lng=response_json['result']['location']['lng']

    return [lat,lng]

    name = input()
    p2l(name)

    测试一下:

    免费的,定位精度还是挺高的,给百度点个赞

    然后调用写好的函数将特征中的地名转为经纬度

    list_place=list(set(dataframe2.iloc[:,1]))#注意要去重
    list_loc=[]
    for elem in list_place:
      name='优衣库'+elem
      print(name)
      list_loc.append(p2l(name))#执行过程中有的地名可能还查不到,会报错,此时需要手动优化一下用来查询的字符串
      print(list_loc)

  • 相关阅读:
    MPI 学习
    关于谱聚类
    线程调度的学习例子
    [转] Linux的IO复用
    网络编程socket
    关于python机器学习常用算法的例子
    [转](阿里笔试)使用多线程和sleep函数生成字符串的伪随机排列
    Single Number II
    阿里面试题,N个士兵的通话问题
    凸优化算法之牛顿法
  • 原文地址:https://www.cnblogs.com/zealousness/p/8303645.html
Copyright © 2011-2022 走看看