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

1.pip安装xlrd,xlwt,requests模块.

2.在工程目录处放置地点Excel文件。

python代码:

#coding:utf-8
import xlrd
import xlwt
import requests
import urllib
import math
import re

pattern_x = re.compile(r‘"x":(".+?")‘)
pattern_y = re.compile(r‘"y":(".+?")‘)

def mercator2wgs84(mercator):
    # key1=mercator.keys()[0]
    # key2=mercator.keys()[1]
    point_x = mercator[0]
    point_y = mercator[1]
    x = point_x / 20037508.3427892 * 180
    y = point_y / 20037508.3427892 * 180
    y = 180 / math.pi * (2 * math.atan(math.exp(y * math.pi / 180)) - math.pi / 2)
    return (x, y)

def get_mercator(addr):
    quote_addr = urllib.quote(addr.encode(‘utf8‘))
    city = urllib.quote(u‘兰州市‘.encode(‘utf8‘))
    province = urllib.quote(u‘甘肃省‘.encode(‘utf8‘))
    if quote_addr.startswith(city) or quote_addr.startswith(province):
        pass
    else:
        quote_addr = quote_addr
    s = urllib.quote(u‘北京市‘.encode(‘utf8‘))
    api_addr = "http://api.map.baidu.com/?qt=gc&wd=%s&cn=%s&ie=utf-8&oue=1&fromproduct=jsapi&res=api&callback=BMap._rd._cbk62300" % (
    quote_addr
    , s)
    req = requests.get(api_addr)
    content = req.content
    x = re.findall(pattern_x, content)
    y = re.findall(pattern_y, content)
    if x:
        x = x[0]
        y = y[0]
        x = x[1:-1]
        y = y[1:-1]
        x = float(x)
        y = float(y)
        location = (x, y)
    else:
        location = ()
    return location

def run():
    data = xlrd.open_workbook(‘Book2.xlsx‘)
    rtable = data.sheets()[0]
    nrows = rtable.nrows
    values = rtable.col_values(0)

    workbook = xlwt.Workbook()
    wtable = workbook.add_sheet(‘data‘, cell_overwrite_ok=True)
    row = 0
    for value in values:
        mercator = get_mercator(value)
        if mercator:
            wgs = mercator2wgs84(mercator)
        else:
            wgs = (‘NotFound‘, ‘NotFound‘)
        print "%s,%s,%s" % (value, wgs[0], wgs[1])
        wtable.write(row, 0, value)
        wtable.write(row, 1, wgs[0])
        wtable.write(row, 2, wgs[1])
        row = row + 1

    workbook.save(‘data.xls‘)

if __name__ == ‘__main__‘:
    run()

  运行即可得到data.xls结果文件。

时间: 2024-10-10 18:19:11

Python利用百度地图api批量获取地址经纬度的相关文章

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

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

利用百度地图开源sdk获取地址信息。

注册百度开发者帐号,下载相关sdk 添加权限: 添加百度注册访问应用(AK)码 添加源代码文件到libs文件: 代码如下: 1 package com.lixu.baidu_gps; 2 3 import com.baidu.location.BDLocation; 4 import com.baidu.location.BDLocationListener; 5 import com.baidu.location.LocationClient; 6 import com.baidu.locat

利用百度地图API获取当前位置信息

利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: 1 <script type="text/javascript"> 2 var map; 3 var gpsPoint; 4 var baiduPoint; 5 var gpsAddress; 6 var baiduAddress; 7 var x; 8 var y; 9 function getLocation() { 10 //根据IP获取城市 1

利用百度地图API和群蚁算法,对TSP问题进行模拟与求解

前言 最近由于换了工作,期间也有反思和总结上家公司的得失,总觉得有什么事情当初可以完成或者完成得更好,其中TSP问题就是其中之一.当初在开发一个仓配系统的时候,有一个线路排程的需求,当时自己简单在纸上画了思路,发现求精确解算法复杂度是N!,所以去百度,发现了NPC问题的概念,但是一直以来都没有对这个问题好好研究过,最终只是选择了贪心算法这一求近似解的方案,正好这是我的第一篇博客,就拿这个“遗憾”开刀吧. 1.  利用百度地图API模拟TSP的各个城市点 1.1. 调用百度地图API解析经纬度 这

HTML5 利用百度地图API获取当前位置

由于项目需要定位到城市,研究了地理定位,做了一些手记,和大家分享一下~ 项目的开发需求是获取到当前用户的位置,然后为用户提供一些服务. 此时可以采用两种定位方式,一种是用GPS的定位,然后将定位到的经纬度传递到百度地图的API接口当中.另一种方法是利用百度API接口,使用IP地址定位,然后使用IP地址获取到的经纬度,传递到百度地图API接口中. 自己尝试使用了这两种方式进行定位.相对来说,IP地址定位,偏差比较大.GPS定位虽然还可以,但是也不足够精确.产生比较大偏差的原因有可能是以下几点造成的

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

<?php //获取用户ip(外网ip 服务器上可以获取用户外网Ip 本机ip地址只能获取127.0.0.1) function getip(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $cip = $_SERVER["HTTP_CLIENT_IP"]; } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){ $cip = $_SERVER[&quo

利用百度地图API,在浏览器中找到自己的位置

首先你得有个百度地图的秘钥,http://lbsyun.baidu.com/apiconsole/key 剩下的就是编码了 这里面会用到一个javascript里的一个函数,getMyLocation(),利用它我们就可以获得自己的经度纬度,然后再经过百度地图,将其显示出来. 上代码,首先是html文件中的代码,使用html5标准 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q

通过百度地图API实现搜索地址--第三方开源--百度地图(三)

搜索地址功能是建立在能够通过百度地图API获取位置的基础上 通过百度地图定位获取位置详情:http://www.cnblogs.com/zzw1994/p/5008134.html 1 package com.zzw.baidumappoint; 2 3 import com.baidu.location.BDLocation; 4 import com.baidu.location.BDLocationListener; 5 import com.baidu.location.Location

PHP利用百度地图API进行IP定位和GPS定位

最近在做一个手机端的webapp地图应用,而核心内容当然是定位了,但是定位的话有几种方式,IP定位,GPS定位,基站定位(这个貌似webapp用不了), 那么剩下核心的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,无法直接显示在地图上. 后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址:http://developer.baidu.com/map/ 百度地图API的调用需要申请KEY,这里就不具体介绍了,直接贴上本人写了两