首页 > 其他分享 >调用百度api通过经纬度获取实际地理位置信息

调用百度api通过经纬度获取实际地理位置信息

时间:2024-03-11 12:11:38浏览次数:25  
标签:经纬度 append json api result print response 百度

需要用到百度地图api地址编码(有地址转经纬度)和逆地址编码功能(由经纬度转标准地址省市区),去申请密钥进行调用。

申请密钥的时候不选择sn,可以避免后面的调用百度地图API报错'211'  sn校验失败。

地址编码官方文档:地理编码 | 百度地图API SDK (baidu.com)

逆地址编码官方文档:全球逆地理编码 rgc 反geo检索 | 百度地图API SDK (baidu.com)

主要实现代码:

# 2.调用百度api实现提取地点的经纬度
def getJingWei(address):
    url = "https://api.map.baidu.com/geocoding/v3"
    params = {
        "address": address,
        "output": "json",
        "ak": "你自己的ak密钥",
    }
    response = requests.get(url=url, params=params)
    result = response.json()
    # print(result)
    longitude = result['result']['location']['lng']  # 经度
    latitude = result['result']['location']['lat']  # 纬度
    lnglist.append(longitude)
    latlist.append(latitude)


# 3.通过经纬度获取地址信息(省市区)
def getAddress(lng, lat):
    response = requests.get('https://api.map.baidu.com/reverse_geocoding/v3/?ak=你自己的密钥&output=json&coordtype=wgs84ll&location='+str(lat)+','+str(lng))
    # if response:
    #     print(response.json())
    result = response.json()
    addlist.append(result['result']['formatted_address'])
    prolist.append(result['result']['addressComponent']['province'])
    citylist.append(result['result']['addressComponent']['city'])
    districtlist.append(result['result']['addressComponent']['district'])

# 测试
print(list[0])
getJingWei(list[0])
print(lnglist[0],latlist[0])
getAddress(lnglist[0],latlist[0])
print(addlist[0])
print(prolist[0],citylist[0],districtlist[0])

 

运行结果如下:

 

总代码,并且输出到指定的txt文件中:

# -*- coding: utf-8 -*-
"""
给地址添加行政编码
"""
import codecs
import requests
import numpy as np

"""
抽取地址,调用接口查看该地址属于哪个省市区
"""
# 1.获取需要的地址数据
# def splittxt():
f = codecs.open('test.txt', mode='r', encoding='utf-8')
lines = f.readlines()
list = []
lnglist = []  # 经度
latlist = []  # 维度
addlist = []  # 标准地址格式省市区
alllist=[]  # 将标准地址省市区组合在一起

for line in lines:
    # print(line.strip().split("\",")[15][1:])  #测试
    list.append(line.strip().split("\",")[15][1:])
f.close()


# print(list[0])


# 2.调用百度api实现提取地点的经纬度
def getJingWei(address):
    url = "https://api.map.baidu.com/geocoding/v3"
    params = {
        "address": address,
        "output": "json",
        "ak": "XoERNVN2GhBcCZISCaOjTQy1WyGlFkIc",
    }
    response = requests.get(url=url, params=params)
    result = response.json()
    # print(result)
    longitude = result['result']['location']['lng']  # 经度
    latitude = result['result']['location']['lat']  # 纬度
    lnglist.append(longitude)
    latlist.append(latitude)


# 3.通过经纬度获取地址信息(省市区)
def getAddress(lng, lat):
    response = requests.get('https://api.map.baidu.com/reverse_geocoding/v3/?ak=XoERNVN2GhBcCZISCaOjTQy1WyGlFkIc&output=json&coordtype=wgs84ll&location='+str(lat)+','+str(lng))
    # if response:
    #     print(response.json())
    result = response.json()
    addlist.append(result['result']['formatted_address'])
    alllist.append(result['result']['addressComponent']['province']+','+result['result']['addressComponent']['city']+','+result['result']['addressComponent']['district'])



# 测试
for i in range(len(list)):
    print(list[i])
    getJingWei(list[i])
    print(lnglist[i],latlist[i])
    getAddress(lnglist[i],latlist[i])
    print(addlist[i])
    print(alllist[i])




# 将结果输出到指定文件中
res_all = '\n'.join(alllist)
with open('alllistrs.txt', 'w', encoding="utf-8") as f:
    f.write(res_all)

 

 

标签:经纬度,append,json,api,result,print,response,百度
From: https://www.cnblogs.com/hmy22466/p/18064972

相关文章

  • 教您如何使用API接口获取虾皮商品详情
    要使用API接口获取虾皮(Shopee)的商品详情,您需要遵循以下步骤:注册并获取API权限首先,您需要在Shopee开放平台注册账号,并创建一个应用。在创建应用的过程中,您需要填写相关信息,包括应用名称、应用描述等。提交应用后,Shopee会审核您的应用并决定是否授予API调用权限。获取API凭证......
  • 使用C#创建服务端Web API
    前言C#WebAPI是一种基于.NET平台(包括但不限于.NETFramework和.NETCore)构建HTTP服务的框架,用于创建RESTfulWeb服务。REST(RepresentationalStateTransfer)是一种软件架构风格,它利用HTTP协议的特性(如GET、POST、PUT、DELETE等方法)来操作资源。在C#中,ASP.NETWebA......
  • API
    API介绍介绍:API应用程序编程接口简单记:就是别人已经写好的代码学习别人已经写好的代码,使用的是API帮助文档帮助文档的使用流程:API帮助文档的使用流程:​​1.在索引位置搜索自己要查看的类​问题:我怎么知道该搜哪一个类?回答:......
  • 常见问题解决 --- 海康OpenAPI安全认证库的demo运行报错
    我要开发一个对接海康isc平台的oss的api,发现需要有海康登录库和ak、sk的配合才能完成。在海康官方下载OpenAPI安全认证库(JAVA)V1.1.11,解压后用idea打开demo发现一对报错。解决办法:1.修复基本的错误。比如包名报错,应该是  packagega; 2.修复maven依赖导入报错。首先是artem......
  • java.net.UnknownHostException: api.weixin.qq.com解决办法
    java.net.UnknownHostException: api.weixin.qq.comat java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)at java.net.Socket.connect(Socket.java:546)at sun.security.ssl.SSLSo......
  • Assistants API
    AssistantsAPI允许您在自己的应用程序中构建AI助手。助手有指令,可以利用模型、工具和知识来响应用户查询。AssistantsAPI目前支持三种类型的工具:代码解释器、检索和函数调用。未来,我们计划发布更多OpenAI构建的工具,并允许您在我们的平台上提供自己的工具。您可以使用Assi......
  • ai破解版百度云+安装包网盘资源下载+补丁注册机
    AI软件用于画卡通、标识、AI软件、信息图形和包装设计等。平面设计师、网页设计师、视觉艺术家和专业插画家在日常生活中使用AI软件。AI软件的用户友好的界面实时追踪功能,面板编辑能力,以及许多其他因素,使它成为最流行的软件矢量艺术在创意产业。为什么选择AI软件......
  • elasticsearch常用请求接口Rest API示例
    创建shopping索引PUT/shopping查看全部索引GET/_cat/indices查看指定索引GET/shopping删除指定索引DELETE/shopping索引的映射字段属性,是否关键字和加入索引PUT/shopping/_mapping{"properties":{"title":{"type":"text"},&qu......
  • 使用C#和MemoryCache组件实现轮流调用APIKey以提高并发能力
    文章信息标题:使用C#和MemoryCache组件实现轮流调用APIKey以提高并发能力的技巧摘要:本文介绍了如何利用C#语言中的MemoryCache组件,结合并发编程技巧,实现轮流调用多个APIKey以提高系统的并发能力。通过示例代码和详细说明,读者将了解如何有效地管理APIKey的调用次数限制,并优化系......
  • kube-api-server的端口是多少?各个pod是如何访问kube-api-server的
    kube-api-server的端口是8080和6443,前者是http的端口,后者是https的端口,以我本机使用kubeadm安装的k8s为例:在命名空间的kube-system命名空间里,有一个名称为kube-api-master的pod,这个pod就是运行着kube-api-server进程,它绑定了master主机的ip地址和6443端口,但是在default命名空间......