目录:

  • 申请ak
  • 批量获取地理位置
  • 优缺点对比

目的:通过给定的地理位置名称(如:北京市海淀区上地十街十号),获取经纬度信息。

1、申请ak

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

  • 提交之后就会有访问应用的AK,这就是你访问的ak:

2、批量获取地理坐标

对于以下文本文件里的城市:

这里是对以上文本文件里的城市进行查询地理位置的代码:

 # coding : utf-8

 """
This program use api to get lon/lat data.
""" import sys
import requests def get_degree(): local_path = 'D:/home/research/lung_cancer/data/pm25/process/' # 把文本文件里的城市全部放入list里面
csv_path = local_path + 'city_2014.csv'
loc_list= []
line_list = []
with open(csv_path, 'r') as handle:
for line in handle.readlines()[1:]:
loc = line.split(',')[1]
loc_list.append(loc)
line_list.append(line.strip()) num = 0 # 将坐标信息写入的新文本文件
new_path = local_path + 'city_2014_google.csv'
f_handle = open(new_path, 'w') for i in range(len(loc_list)):
loc = loc_list[i]
try:
# Three type apis:baidu,qq,google.
# 百度API
# request = ('http://api.map.baidu.com/geocoder/v2/?address=' + loc
# + '&output=json&ak=你的ak')
# 腾讯API
# request = ('http://apis.map.qq.com/ws/geocoder/v1/?address=' + loc
# + '&key=你的key')
# 谷歌API
request = ('https://maps.googleapis.com/maps/api/geocode/json?address='
+ loc + '&key=你的key')
response = requests.get(request)
response.raise_for_status()
num += 1
print('HTTP request successed!--{}'.format(num))
except Exception as e:
print('HTTP request failed!-{}'.format(str(e))) print(response.text) # eval将json字符串转变为字典
lat = eval(response.text)['results'][0]['geometry']['location']['lat']
lng = eval(response.text)['results'][0]['geometry']['location']['lng']
# 将坐标信息写入硬盘
f_handle.write(line_list[i] + ',' + str(round(lat,2)) + ','
+ 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

谷歌、腾讯、百度相应API批量获取地理位置坐标信息及其优缺点的更多相关文章

  1. android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用

    1.获取当前地理位置: Android中提供了一个LocationManager的类,用于管理地理位置.不能通过构造函数获取该类的实例,而是通过Context的getSystemService(): ...

  2. Python利用百度地图api批量获取地址经纬度

    1.pip安装xlrd,xlwt,requests模块. 2.在工程目录处放置地点Excel文件. python2.7.13代码: #coding:utf-8 import xlrd import x ...

  3. 利用百度翻译API,获取翻译结果

    利用百度翻译API,获取翻译结果 translate.py #!/usr/bin/python #-*- coding:utf-8 -*- import sys reload(sys) sys.set ...

  4. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 利用百度地图API,获取经纬度坐标

    利用百度地图API,获取经纬度坐标 代码很简单,但在网上没找到现成的获取地图经纬度的页面. 就是想,给当前页面传递一个经纬度,自动定位到此经纬度.然后可以重新选择,选择完返回经纬度. 效果如下: 源代 ...

  6. Windows Store Javascript项目使用高德地图、谷歌地图、百度地图API

    原文 Windows Store Javascript项目使用高德地图.谷歌地图.百度地图API 在Win8 Store 项目中可以使用的地图主要有微软的Bing Map,目前高德地图sdk也支持Wi ...

  7. 用户Ip地址和百度地图api接口获取用户地理位置(经纬度坐标,城市)

    <?php   //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1) function getip(){     if(!empty($_SERVE ...

  8. 使用百度地图API自动获取地址和经纬度

    先上效果图,这是直接点击获取经纬度和地址的.没有做搜索的功能. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  9. 使用百度地图api接口获取公交地图路线和车站

    需要在页面文件中引用百度的js @*<script type="text/javascript" src="http://api.map.baidu.com/api ...

随机推荐

  1. R语言 文本挖掘 tm包 使用

    #清除内存空间 rm(list=ls()) #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1. ...

  2. 使用Gulp进行代码压缩的步骤以及配置

    一.安装步骤 1.首先确定是否安装了node.js,如果未安装,请先安装node.js: 2.确定是否安装了包管理工具npm,如未安装请安装:npm install npm -g: 3.安装gulp: ...

  3. VMware vSphere学习整理

    知识点整理 内存选择 一般来说,每个虚拟机需要的内存在1~4GB甚至更多,还要为VMware ESXi预留一部分内存 2个6核的2U服务器配置64GB内存,4个6核或8核心的4U服务器配置128GB或 ...

  4. Python与Mongodb交互

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB 将数据存储为一个文档,数据结构由键值 ...

  5. NCBI下载sra数据(新)

      今天要上NCBI下载sra数据发现没有下载的链接,网上查发现都是老的方法,NCBI页面已经变更,于是看了NCBI的help,并且记录下来新版的sra数据下载方法,要用NCBI的工具SRA Tool ...

  6. VS2013 图片背景·全透明背景图(转)

    Note: 1.xaml编辑器和个别的编辑器(如HTML的)因为是承载在VS的一个子窗口上,所以背景依然是黑色的. 2.该背景必须在VS实验环境下使用. 效果图: 1.准备工作 1.先准备Visual ...

  7. 手机浏览网页或打开App时莫名弹出支付宝领红包界面的原因及应对措施

    自从支付宝推出扫码领红包活动后,这种模式独特的赏金机制,短时间内吸引了大量的关注,但是随之也产生了很多的问题,比由于如在赏金的驱动下,微信群里铺天盖地的红包口令,朋友圈里各式各样的领红包二维码图片, ...

  8. UVA10692:Huge Mods

    题面 传送门 题意 输入正整数a1,a2,a3..an和模m,求a1^a2^...^an mod m Sol 首先有\[ a^b\equiv \begin{cases} a^{b\%\phi(p)}~ ...

  9. JAVA面试题二

    JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...

  10. 论文笔记(1):From Image-level to Pixel-level Labeling with Convolutional Networks

    文章采用了多实例学习(MIL)机制构建图像标签同像素语义的关联 . 该方法的训练样本包含了70 万张来自ImageNet的图片,但其语义分割的性能很大程度上依赖于复杂的后处理过程,主要包括图像级语义的 ...