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

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

Windows开机过程和测试方法探索

用户会经常抱怨自从安装自己的应用后,电脑开机变慢,到底是系统的原因还是应用的原因,为了了解这里的问题,探秘了下windows的开机过程和测试方法。 一、开机过...

23810
来自专栏IT技术精选文摘

负载均衡详解

面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机...

4018
来自专栏从零开始学 Web 前端

关于开发板用tftp下载失败分析

一、想实现开发板和PC ping通: (1)windows和linux桥接 (2)用路由器将开发板和PC连接起来 (3)将windows和linux以及开发板的...

1472
来自专栏JetpropelledSnake

Web负载均衡学习笔记之四层和七层负载均衡的区别

  ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换...

1012
来自专栏恰同学骚年

Hadoop学习笔记—14.ZooKeeper环境搭建

从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采...

782
来自专栏腾讯大数据的专栏

万亿级数据流集群无缝迁移方案

前言 在TDBank的接入数据中,有86%的数据流向TDW集群,因此为了减少流量在IDC间穿越,TDBank的集群选择跟TDW部署在同一个IDC。但是,随着业务...

2709
来自专栏用户2442861的专栏

高性能网络编程(一)----accept建立连接(陶辉)

http://blog.csdn.net/russell_tao/article/details/9111769

761
来自专栏知识分享

1-关于ESP8266配网,单片机程序远程升级(我的配网和升级程序方式)

7754
来自专栏北京马哥教育

四层和七层负载均衡的区别

(一) 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载...

2836
来自专栏北京马哥教育

【基础补缺】 - 谈谈对于vmware Workstation 网络连接三种模式的认识.

简介: VM(VMware Workstation简称VM,后面都将用VM代替阐述)是一款功能强大的虚拟化软件.VM支持在 单一的桌面上同时运行多款不同的操作系...

3466

扫码关注云+社区