精华内容
下载资源
问答
  • 如题,先上效果图:主要分为两大步骤使用python语句,通过百度地图API,对已知的地名抓取经纬度使用百度地图API官网的html例程,修改数据部分,实现呈现效果一、使用python语句,通过百度地图API,获取经纬度读取...

    如题,先上效果图:

    19101463519629985806128310.png

    主要分为两大步骤

    使用python语句,通过百度地图API,对已知的地名抓取经纬度

    使用百度地图API官网的html例程,修改数据部分,实现呈现效果

    一、使用python语句,通过百度地图API,获取经纬度读取文件信息

    import pandas as pd

    data = pd.read_excel('test_baidu.xlsx')

    data

    19101463519752519007371599.png

    图中可以看出,原始数据并没有经纬度。

    2. 构建抓取经纬度函数

    import json

    from urllib.request import urlopen, quote

    import requests

    def getlnglat(address):

    url = 'http://api.map.baidu.com/geocoder/v2/'

    output = 'json'

    ak = '你的百度地图ak' # 百度地图ak,具体申请自行百度,提醒需要在“控制台”-“设置”-“启动服务”-“正逆地理编码”,启动

    address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码

    uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak

    req = urlopen(uri)

    res = req.read().decode()

    temp = json.loads(res)

    lat = temp['result']['location']['lat']

    lng = temp['result']['location']['lng']

    return lat,lng # 纬度 latitude , 经度 longitude ,

    3. 抓取经纬度

    for indexs in data.index:

    get_location = getlnglat(data.loc[indexs,'圈定区域'])

    get_lat = get_location[0]

    get_lng = get_location[1]

    data.loc[indexs,'纬度'] = get_lat

    data.loc[indexs,'经度'] = get_lng

    data

    19101463519897568308416068.png

    已经自动查找到对应的经纬度(不排除部分搜索不准,但是大概看过,还是挺准的。)

    4. 生成HTML适配的格式

    data_html = pd.DataFrame(columns=['content'])

    for indexs in data.index:

    data_html.loc[indexs,'content'] = '{' + \

    '"lat":' + str(data.loc[indexs,'纬度']) + ',' + \

    '"lng":' + str(data.loc[indexs,'经度']) + ',' + \

    '"quyu":' + '"' + str(data.loc[indexs,'圈定区域']) +'"' + \

    '}' + ','

    data_html.to_csv ("data_html.csv",encoding="gbk")

    data_html

    19101463520301859778802149.png

    生成对应的格式,然后就copy出来了。

    二、使用百度地图API官网的html例程,修改数据部分,实现呈现效果1. copy百度地图API官网的HTML例程

    地址:http://developer.baidu.com/map/jsdemo.htm#c1_19

    19101463520418079464679921.png

    2. 修改部分内容

    放上自己的百度地图AK

    修改一下地图初始化显示的中心和缩放的系数

    放上自己需要显示的信息,记得把数据中最后一个的逗号删除

    修改前:

    19101463520603945136762296.png

    修改后:

    19101463520788471253621767.png

    题外:

    其实一开始是使用folium进行尝试的,因为可以直接生成html文件,只需要Python就行了,不需要再写HTML,但是遇到两个暂时无法解决的问题:

    1、marker不能正常显示,官网的marker都不行

    19101463520992393782966929.png

    2、openstreetmap的细致程度,比不上百度地图,这个有点致命。

    19101463521161727451170508.png

    以上所述是小编给大家介绍的利用python和百度地图API实现数据地图标注的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

    展开全文
  • 1.pip安装xlrd,xlwt,requests模块.2....python2.7.13代码:#coding:utf-8import xlrdimport xlwtimport requestsimport urllibimport mathimport repattern_x = re.compile(r'"x":(".+?")')pattern_y = re.c...

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

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

    python2.7.13代码:

    #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结果文件。

    PS:py2和Py3有些些不同。

    python3.6.1代码

    # 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.parse.quote(addr.encode('utf8'))

    city = urllib.parse.quote(u'兰州市'.encode('utf8'))

    province = urllib.parse.quote(u'甘肃省'.encode('utf8'))

    if quote_addr.startswith(city) or quote_addr.startswith(province):

    pass

    else:

    quote_addr = quote_addr

    s = urllib.parse.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.text

    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.xls')

    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()

    展开全文
  • 有2种方式,第一种是利用urllib ,方法1:利用urllib , 先把url 转成urlcode,然后读取...http://api.map.baidu.com/geocoder?key=f247cdb592eb43ebac6ccd27f796e2d2&output=json&address=北京市2.将查询转换为urlco...

    有2种方式,第一种是利用urllib ,

    方法1:利用urllib , 先把url 转成urlcode,然后读取网页,读到网页再用json读取内容,比较麻烦。

    可以在浏览器输入,看一下格式。

    http://api.map.baidu.com/geocoder?key=f247cdb592eb43ebac6ccd27f796e2d2&output=json&address=北京市

    890856-20170720102558943-1746877826.png

    2.将查询转换为urlcode

    890856-20170720102828365-902795799.png

    读取网页内容:

    890856-20170720102920396-2079910252.png

    读取json数据:

    890856-20170720102957333-2124364431.png

    程序:

    1 from urllib importparse2 query ={3 'key' : 'f247cdb592eb43ebac6ccd27f796e2d2',4 'address': '北京市',5 'output':'json',6 }7 base = 'http://api.map.baidu.com/geocoder?'

    8 url = base+parse.urlencode(query)9

    10 importurllib.request11 doc =urllib.request.urlopen(url)12 s = doc.read().decode('utf-8') #一定要解码!!!!

    13 importjson14 jsonData =json.loads(s)15 lat=jsonData['result']['location']['lat']16 lng =jsonData['result']['location']['lng']

    方法二:利用request模块,更加简单。

    890856-20170720103924677-1021455561.png

    程序:

    1 address = '北京市'

    2 url= 'http://api.map.baidu.com/geocoder?output=json&key=f247cdb592eb43ebac6ccd27f796e2d2&address='+str(address)3 response =requests.get(url)4 answer =response.json()5 lon = float(answer['result']['location']['lng'])6 lat = float(answer['result']['location']['lat'])

    参考:

    http://www.cnblogs.com/GuoYaxiang/p/6232831.html

    http://www.cnblogs.com/Lands-ljk/p/5447127.html

    http://blog.csdn.net/dove1980/article/details/7929693

    http://blog.csdn.net/lanchunhui/article/details/51207696

    展开全文
  • 1.[代码][Python]代码#!/usr/bin/python#coding:utf-8import xlrdimport xlwtimport requestsimport urllibimport mathimport repattern_x=re.compile(r'"x":(".+?")')pattern_y=re.compile(r'"y":(".+?")')def ...

    1.[代码][Python]代码

    #!/usr/bin/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=city+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.xls')

    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()

    展开全文
  • 1 数据准备经过尝试,百度地图API需要输入城市中文名称才能获取对应经纬度坐标,因此先将英文的城市名称转为中文一共347个城市由于在测试过程中发现高德和百度地图API分别有几个城市的地址无法获取经纬度,但是恰好...
  • 逆地理编码指的是:将经纬度转换成地理位置信息,如地名、所在的省份或城市等百度地图提供了相应的API,可以方便调用。相应的说明文档如下:正地理编码逆地理编码具体API的参数可以查看相应的“服务文档”:不过首次...
  • 基于百度地图的多功能数据采集模块 """ from math import radians, cos, sin, asin, sqrt import requests # 您的key值=你在百度开发者开放平台申请的key # 依据地址获取经纬度 def Address_to_J...
  • 作者:国服帅座 经济学硕士在读微信公众号:统计之家在爬虫之前,了解下百度地图API。百度与高德在地理编码API上的主要差异,个人归纳如下:a、二者体系独立,所得的经纬度数据略有不同b、百度默认输出格式为xml,而...
  • from urllib import request from urllib.parse import quote import hashlib import json import string def getLocation(address='... url="http://api.map.baidu.com/geocoder?output=json&key=2OglfBzxob
  • 作者:国服帅座 经济学硕士在读微信公众号:统计之家在爬虫之前,了解下百度地图API。百度与高德在地理编码API上的主要差异,个人归纳如下:a、二者体系独立,所得的经纬度数据略有不同b、百度默认输出格式为xml,而...
  • 最近在看《python网络编程》,里面的代码使用的案例是通过调用谷歌地图来查询经纬度,但是网络一直连不上,就用百度地图api来实现书中的案例。 这里提到的查询经纬度按照调用层次可以有三种办法:第一种是构造...
  • print(emp) getLocation(address=emp) def getLocation(address='address'): url = "http://api.map.baidu.com/place/v2/search?query="+address+"&tag=地铁站®ion=苏州市&output=json&ak=自己申请的key" url = ...
  • 主要给大家介绍了关于python通过百度地图API获取某地址的经纬度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
  • python 百度地图 经纬度转地址

    千次阅读 2017-08-13 20:55:38
    百度地图 经纬度转地址
  • 1.百度地图API需要申请并创建应用才能使用,申请地址:http://lbsyun.baidu.com/apiconsole/center#/home 2.参考文档:http://lbsyun.baidu.com/index.php?title=uri/api/web 3.例子中输入纬度,经度,输出所在城市名,...
  • 利用Python根据地址获取经纬度(地理编码),申请百度地图秘钥,request访问api接口、解析返回的json数据,得到经纬度数据。
  • python通过百度地图API,获取所给地址的经纬度,并且在百度地图上进行撒点。 另:百度地图API功能强大,如: GPS功能(单个点沿线运动)、 信息窗口示例(添加纯文字的信息窗口)、 JavaScript API GL v.10(轨迹...
  • import requests address = '40.8587960,86.866991' ...url = 'http://api.map.baidu.com/geocoder?output=json&key=f247cdb592eb43ebac6ccd27f796e2d2&location=' + str(address) res...
  • 有2种方式,第一种是利用urllib ,方法1:利用urllib , 先把url 转成urlcode,然后读取...http://api.map.baidu.com/geocoder?key=f247cdb592eb43ebac6ccd27f796e2d2&output=json&address=北京市2.将查询转换为urlco...
  • Python调用高德地图API实现经纬度换算、地图可视化

    万次阅读 多人点赞 2019-06-26 21:42:16
    前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密钥、批量...
  • Python请求百度地图API获取指定地址的经纬度信息
  • QGIS导入数据教程一、在openstreetmap官网中获取目标区域的四个经纬度值1、打开OSM官网,将地图定位在需要下载的区域2、选择 导出----手动选择不同区域,在地图上会出现选择框,根据需要选好区域二、用QGIS获取目标...
  • Python调用百度地图API,通过经纬度信息计算两地距离 前期工作: 首先注册百度账号,然后在打开百度开放平台,点击控制台,进入控制台页面,然后激活个人开发者账号,这样就可以使用该平台。 在控制台页面,点击...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,185
精华内容 474
关键字:

python百度地图api经纬度

python 订阅