更多可以查看 http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
地理编码示例:
以下是关于地理编码参数使用方法的示例。发送请求显示结果的JavaScript代码此处查看。
请求示例:对北京市百度大厦进行地理编码查询;
http://api.map.baidu.com/geocoder/v2/?callback=renderOption&output=json&address=百度大厦&city=北京市&ak=您的ak
地理编码返回结果字段:
名称 | 类型 | 说明 | |
---|---|---|---|
status | Int | 返回结果状态值, 成功返回0,其他值请查看下方返回码状态表。 | |
location | object | 经纬度坐标 | |
lat | float | 纬度值 | |
lng | float | 经度值 | |
precise | Int | 位置的附加信息,是否精确查找。1为精确查找,即准确打点;0为不精确,即模糊打点。 | |
confidence | Int | 可信度,描述打点准确度 | |
level | string | 地址类型 |
json格式的返回值:
renderOption&&renderOption({"status":0,"result":{"location":{"lng":116.30775539540982,"lat":40.05685561073758},"precise":1,"confidence":80,"level":"商务大厦"}})
这对一条两条的转可以, 要大批量的呢??? 一堆位置,都还没对应的经纬度,只有一个位置名称....
思路:
1. 在原位置功能上,增加1个设置经纬度的,手工编辑下,录入入库;
2. 把位置这个转成经纬度, 看看有没批量的,批量操作拿到后,先入到库;
后面直接调用接口,数据返回用就行..
怎么用程序通过百度地图API批量获取具体地址的经纬度
搬过来的,没试过,后面试试看
https://zhidao.baidu.com/question/2078225436147396308.html?fr=iks&word=js%B0%D9%B6%C8%B5%D8%CD%BCapi+%CE%BB%D6%C3%C5%FA%C1%BF%D7%AA%CE%AC%B6%C8&ie=gbk
方法一
建议使用xGeocoding工具,可以批量获得Google Earth/Google Map/百度/腾讯/高德等地图的经纬度。工具地址如下:http://www.gpsspg.com/xgeocoding/
方案二
使用Python程序,直接嵌入即可。代码如下:(需要注意的是百度API获取的是墨卡托坐标,而实际使用的是WGS84坐标。代码已添加转换,只要设定语言一致即可实现。)
#!/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'<a href="https://www.baidu.com/s?wd=%E9%BD%90%E9%BD%90%E5%93%88%E5%B0%94%E5%B8%82&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YznHndPHNBrjfYryR1mH9B0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LrjczPHf1PWDYP1n4PWnsr0" target="_blank" class="baidu-highlight">齐齐哈尔市</a>龙'.encode('utf8')) province=urllib.quote(u'<a href="https://www.baidu.com/s?wd=%E9%BB%91%E9%BE%99%E6%B1%9F%E7%9C%81&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YznHndPHNBrjfYryR1mH9B0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LrjczPHf1PWDYP1n4PWnsr0" target="_blank" class="baidu-highlight">黑龙江省</a>'.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()