谷歌、騰訊、百度相應API批量獲取地理位置坐標信息及其優缺點


目錄:

  • 申請ak
  • 批量獲取地理位置
  • 優缺點對比

 

目的:通過給定的地理位置名稱(如:北京市海淀區上地十街十號),獲取經緯度信息。

 

1、申請ak

以百度Geocoding API為例: http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

  • 提交之后就會有訪問應用的AK,這就是你訪問的ak:

 

2、批量獲取地理坐標

對於以下文本文件里的城市:

 

這里是對以上文本文件里的城市進行查詢地理位置的代碼:

 1 # coding : utf-8
 2 
 3 """
 4 This program use api to get lon/lat data.
 5 """
 6 
 7 import sys
 8 import requests
 9 
10 def get_degree():
11 
12     local_path = 'D:/home/research/lung_cancer/data/pm25/process/'
13 
14     # 把文本文件里的城市全部放入list里面
15     csv_path = local_path + 'city_2014.csv'
16     loc_list= []
17     line_list = []
18     with open(csv_path, 'r') as handle:
19         for line in handle.readlines()[1:]:
20             loc = line.split(',')[1]
21             loc_list.append(loc)
22             line_list.append(line.strip())
23 
24     num = 0
25 
26     # 將坐標信息寫入的新文本文件
27     new_path = local_path + 'city_2014_google.csv'
28     f_handle = open(new_path, 'w')
29 
30     for i in range(len(loc_list)):
31         loc = loc_list[i]
32         try:
33             # Three type apis:baidu,qq,google.
34             # 百度API
35             # request = ('http://api.map.baidu.com/geocoder/v2/?address=' + loc 
36             #         + '&output=json&ak=你的ak')
37             # 騰訊API
38             # request = ('http://apis.map.qq.com/ws/geocoder/v1/?address=' + loc
39             #         + '&key=你的key')
40             # 谷歌API
41             request = ('https://maps.googleapis.com/maps/api/geocode/json?address='
42                     + loc + '&key=你的key')
43             response = requests.get(request)
44             response.raise_for_status()
45             num += 1
46             print('HTTP request successed!--{}'.format(num))
47         except Exception as e:
48             print('HTTP request failed!-{}'.format(str(e)))
49 
50         print(response.text)
51 
52         # eval將json字符串轉變為字典
53         lat = eval(response.text)['results'][0]['geometry']['location']['lat']
54         lng = eval(response.text)['results'][0]['geometry']['location']['lng']
55         # 將坐標信息寫入硬盤
56         f_handle.write(line_list[i] + ',' + str(round(lat,2)) + ',' 
57                        + str(round(lng,2)) + '\n') 

 

查詢時會返回這樣的信息,可以是json或者xml,這里我選擇的是json: 

 

這里是結果,第3、4個分別是緯度和經度:

 

3、優缺點對比

限制指的是限速和限量。

百度api:限制小,但是不准確; http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
騰訊api:雖准確,但限制太大;
谷歌api:限制中等,且准確;(最終用) https://developers.google.com/maps/documentation/javascript/geocoding


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM