从百度地图api获取地铁站经纬度

class GetInfo:
    def __init__(self,df):
        import pandas
        assert type(df) == pandas.core.frame.DataFrame and ('city' in df.columns) and ('name' in df.columns),\
'The dataframe is not vailid'
        from bs4 import BeautifulSoup 
        from urllib import request
        import re
        import pandas as pd
        import numpy as np
        import urllib.parse as urp
        from xml.etree import ElementTree
        import time
        self.__data__ = df
    def get_location(self):
        self.__data__['lng'] = np.nan
        self.__data__['lat'] = np.nan
        for i in self.__data__.index:
            self.__data__.loc[i,'lat'],self.__data__.loc[i,'lng'] = self.__get_location1__(self.__data__.loc[i,'name'],\
                                                                                           self.__data__.loc[i,'city'])
        return self.__data__
    def __get_location1__(self,name,city):
        my_ak = ###换上自己的AK##
        tag = urp.quote('地铁站')
        qurey = urp.quote(name)
        try:
            url = 'http://api.map.baidu.com/place/v2/search?query='+qurey+'&tag='+'&region='+urp.quote(city)+'&output=json&ak='+my_ak
            req = request.urlopen(url)
            res = req.read().decode()
            lat = pd.to_numeric(re.findall('"lat":(.*)',res)[0].split(',')[0])
            lng = pd.to_numeric(re.findall('"lng":(.*)',res)[0])
            return lat,lng
        except:
            return 0,0

猜你喜欢

转载自blog.csdn.net/weixin_41968760/article/details/80663578