谷歌、腾讯、百度相应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 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏魂祭心

原 canvas绘制clock

4054
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2547
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

6768
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2702
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4005
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3105
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

2958
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

31410
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2050

扫码关注云+社区