通过百度地图批量查询经纬度/通过经纬度批量查询县市

通过百度地图查询经纬度/通过经纬度查询县市

首先的首先,需要去百度地图开发者申请一个ak密钥(如何申请百度一下)。

# coding:utf-8
from urllib.request import urlopen,quote
import requests,csv
import pandas as pd
import json
import time
import random
#%% 通过百度地图地理查询和逆地址查询:
def get_location(address):#通过百度地图查找经纬度:输入地址
    try:
        url = 'https://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak=输入自己的ak'.format(address)
        dic = requests.get(url).json()
        lng = dic['result']['location']['lng']
        lat = dic['result']['location']['lat']       
        return lng, lat
    except:
        return('','')
def getlocation(address):#通过百度地图查询市和县:输入经纬度
    try:
        url = 'http://api.map.baidu.com/reverse_geocoding/v3/?'
        output = 'json'
        ak = '输入自己的ak'
        #生成完整url
        uri = url + '&output=' + output + '&ak=' + ak + '&location=' + str(address) #+ ',' + str(lng)
        response = requests.get(uri)
        answer = response.json()
        #dic = requests.get(uri).json()
        city = answer['result']['addressComponent']['city']
        district = answer['result']['addressComponent']['district']
        return city,district
    except:
        return('Nan')
print('选择通过百度地图查询经纬度(输入1)或查询地址(输入2):')
i=int(input())
if i==1:
    while True:        
        print('请输入详细地址/详细地址:')
        address=input()
        a=get_location(address)
        print('百度地图查询出的经纬度:'+str(a))
if i==2:
    while True:
        print('请输入经纬度(先纬度后经度,用英文逗号隔开): ')
        latlng=input()
        c=getlocation(latlng)
        print('百度地图查询出的市和县:'+str(c))

截至到这里,就可以实现经纬度和位置的互查了。
但是很多时候我们有很多的经纬度/具体位置,因此需要批量查找:

#通过地址批量查询经纬度
def get_location(address):
    try:
        url = 'https://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak=输入自己的ak'.format(address)
        dic = requests.get(url).json()
        lat = dic['result']['location']['lat']
        lng = dic['result']['location']['lng']
        return lat, lng
    except:
        return('','')
df=pd.read_excel(r'放入自己的excel')
for i in df.index:
    addr_dict=get_location(df.loc[i,'地点'].strip())
    df.loc[i,'lng']=addr_dict[0]
    df.loc[i,'lat']=addr_dict[1]
print(df)
with pd.ExcelWriter(r'输出文件夹') as writer:
    df.to_excel(writer, sheet_name='sheet的名字')

通过经纬度查询县市与查询经纬度同理。

你可能感兴趣的:(百度,python,爬虫)