使用python获取城市经纬度,python获取经纬度,python2 环境下利


python2 环境下利用google geocoding api获取城市经纬度信息。

import urllib, urllib2import jsonclass GeoCoding(object):    def __init__(self, key = ' '):        self.url_para = {'address': '',                  'sensor': 'false',                 'language': 'zh-CN'}        self.url = 'http://maps.googleapis.com/maps/api/geocode/json'        self.geo_info_list = []    def get_latlng_by_name(self, geo_name):        self.url_para['address'] = geo_name.encode('utf-8')        arguments = urllib.urlencode(self.url_para)        url_get_geo = self.url + '?' + arguments        handler = urllib2.urlopen(url_get_geo)        resp_data = handler.read()        handler.close()        st = self.parse_ret_json(resp_data)        return self.geo_info_list    def parse_ret_json(self, ret_str):        parse_st = False        ret_json = json.loads(ret_str)        if ret_json['status'] == 'OK':            #get lat lng and addr            for geo_info in ret_json['results']:                #print(geo_info)                geo_dict = {'lat': geo_info['geometry']['location']['lat'],                            'lng': geo_info['geometry']['location']['lng'],                            'addr': geo_info['formatted_address'],                            'city':'',                            'state_province':'',                            'country':'',                            'types': geo_info['types']}                #get city state_provine country                for addr_comp in geo_info['address_components']:                    if 'country' in addr_comp['types']:                         geo_dict['country'] = addr_comp['long_name']                    elif 'administrative_area_level_1' in addr_comp['types']:                        geo_dict['state_province'] = addr_comp['long_name']                    elif 'sublocality' in addr_comp['types'] or \\                         'locality' in addr_comp['types'] or \\                         'administrative_area_level_2' in addr_comp['types'] or \\                         'administrative_area_level_3' in addr_comp['types']:                        geo_dict['city'] = addr_comp['long_name']                self.geo_info_list.append(geo_dict)             parse_st = True            print(self.geo_info_list)        else:            parse_st = False            print(ret_json['status'])         return parse_st#该片段来自于http://byrx.net

评论关闭