谷歌、腾讯、百度相应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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刘君君

Rest Notes-REST架构的视图

1334
来自专栏Jerry的SAP技术分享

微信程序开发系列教程(二)使用JavaScript给微信用户发送消息

我之前的文章 微信程序开发系列教程(一)开发环境搭建 介绍了微信开发环境的搭建,这篇文章我们就来一步步开发一些具体的功能。

962
来自专栏向治洪

携程React Native实践

React Native(下文简称 RN)开源已经一年多时间,国内各大互联网公司都在使用,携程也在今年 5 月份投入资源开始引入,并推广给多个业务团队使用,本文...

2827
来自专栏SEO

SEOer必学网站分析神器(二)

昨晚发布“SEOer必学网站分析神器(全新解析一)”后,突然发现,里面少讲了一点内容,在这里给大家补上。 移动适配:除了上次讲的一些内容外,还是可以加快移动端...

3056
来自专栏菩提树下的杨过

oAuth 2.0 笔记

OAuth 2.0规范于2012年发布,很多大型互联网公司(比如:微信、微博、支付宝)对外提供的SDK中,授权部分基本上都是按这个规范来实现的。 OAuth 2...

16310
来自专栏IT派

Django | CoolBlog开发笔记第1课:项目分析

CoolBlog开发笔记第1课:项目分析 首先说一下CoolBlog开发笔记是我制作的《Django实战项目》系列教程基础篇的内容,使用Django来开发一个...

3654
来自专栏沈唁志

在WordPress中优化谷歌(AdSense)广告联盟

很多时候我们需要将某些内容在指定的页面中显示,比如将谷歌自动广告设置为不在首页显示,这些都可以通过修改代码来达到效果

1063
来自专栏WindCoder

WordPress开发人员犯的12个最严重的错误

原本之前还有篇ruby的,拖得时间有点久了,同时本身没想过去过多接触ruby,所以暂且就不再祸害那篇文章了,有兴趣的可自己去看Creating a Ruby D...

621
来自专栏腾讯Bugly的专栏

微信小程序开发思考总结——腾讯“信用卡还款”项目实践

小程序概述 昨天晚上,微信团队对外宣布,微信小程序开放公测。开发者可登陆微信公众平台申请,开发完成后可以提交审核,公测期间咱不能发布。 我们前一段时间也进行了小...

3393
来自专栏Coding01

「3步」发布 Laravel 插件 (二)

延续上一篇「12步」制作 Laravel 插件 (一),今天我们就来完成后续的步骤:写好的插件部署到「Packagist」上。

634

扫码关注云+社区