1. 程式人生 > >從百度地圖api獲取地鐵站經緯度

從百度地圖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