python:具体地址 <----> 经纬度

813 阅读1分钟

前言

通过百度地图,腾讯地图等,可以进行具体地址和经纬度数据中间的转换。

准备工作

到百度地图开放平台,申请ak,正常情况下,一天只能免费用6000次,https://lbsyun.baidu.com/
每次请求服务,最好间隔一定的时间,比如0.2秒

或者到腾讯位置服务,申请key,https://lbs.qq.com/

1/使用腾讯地图代码

import pandas as pd
import numpy as np
import myutil
import requests
import datetime
from tqdm import * 
import time
from loguru import logger
import xlrd
import csv
import json

pd.set_option('display.max_rows',None)
pd.set_option('display.max_columns',None)
pd.set_option('max_colwidth',500)
pd.set_option('display.width',10000)

# 申请的腾讯地图开发者key
tengxun_map_developer_key = xxxxxxx 


# 输入地址,得到经纬度
def address_to_coordinate(address):
    url = "http://apis.map.qq.com/ws/geocoder/v1/?address={}&key={}".format(address, tengxun_map_developer_key)  # 地址解析,地址转坐标
    response = requests.get(url)
    answer = response.json()
  
    if answer['status'] == 0:  #状态码是0,代表访问成功 
        lng = answer['result']['location']["lng"]  # 经度
        lat = answer['result']['location']["lat"]  # 纬度
    else:
        lng = np.nan
        lat = np.nan
        print("没有获得具体的经纬度!!!")
   
    return lng,lat

# 输入经纬度,得到地址
# 输入的lat_lng参数是字符串
# 纬度在前,中间用,连接,比如"40.066479,116.309303"

def coordinate_to_address(lat_lng):  # 注意入参格式:纬度,经度
    url = "https://apis.map.qq.com/ws/geocoder/v1/?location={}&get_poi={}&key={}".format(lat_lng, 1,tengxun_map_developer_key)  # 坐标转地址
    response = requests.get(url)
    answer = response.json()
    #print(answer)
    
    if answer['status'] == 0:
        address = answer['result']['address']
    else:
        address = 'error'
        print(address)
        
    return address

2/使用百度地图代码

import pandas as pd
import numpy as np
import myutil
import requests
import datetime
from tqdm import * 
import time
from loguru import logger
import xlrd
import csv
import json

pd.set_option('display.max_rows',None)
pd.set_option('display.max_columns',None)
pd.set_option('max_colwidth',500)
pd.set_option('display.width',10000)

# 申请的腾讯地图开发者key
baidu_map_developer_key = xxxxxxx 

def get_location_from_baidu_map(addr):
    url = "http://api.map.baidu.com/geocoding/v3/?" #百度地图API接口
    
    para = {"address": addr, #传入地址参数
            "output": "json",
            "ak": baidu_map_developer_key  #百度地图开放平台申请ak
           }
           
    req = requests.get(url,para)
    req = req.json()

    if req["status"] == 0:
        lng = req["result"]["location"]["lng"]  # 经度
        lat = req["result"]["location"]["lat"]  # 纬度
    else:
        lng = np.nan
        lat = np.nan

    return lng,lat