当前位置: 首页 > article >正文

Python+天地图API实战:批量地址转经纬度完整流程(附避坑指南)

Python天地图API实战批量地址转经纬度完整流程附避坑指南在物流调度、商业选址分析或地图应用开发中经常需要将大量地址文本转换为精确的经纬度坐标。传统手动操作效率低下而专业GIS软件又存在学习成本高的问题。本文将手把手带您用Python天地图API搭建自动化工具实现单日处理7000条地址的高效转换并分享实际项目中积累的6个关键避坑经验。1. 环境配置与API申请1.1 开发环境搭建推荐使用Python 3.8版本其稳定性已通过大量地理数据处理项目验证。核心依赖库包括pip install requests2.28.1 # API请求 pip install pandas1.5.3 # 表格处理 pip install openpyxl3.0.10 # Excel读写注意避免混用conda和pip安装可能导致库版本冲突。建议创建专属虚拟环境。1.2 天地图API密钥获取访问天地图开放平台注册开发者账号需实名认证控制台→应用管理→创建新应用记录生成的API Key形如a1b2c3d4e5f6g7h8i9j0关键参数说明配额类型每日限额请求频率限制地理编码服务7000次10次/秒逆地理编码服务2000次5次/秒2. 核心代码实现2.1 基础请求函数封装import requests import pandas as pd def geocode_address(address: str, api_key: str) - dict: 单地址地理编码 base_url http://api.tianditu.gov.cn/geocoder params { ds: f{{keyWord:{address}}}, tk: api_key } try: response requests.get(base_url, paramsparams, timeout10) data response.json() if data.get(status) 0: return { lng: float(data[location][lon]), lat: float(data[location][lat]) } return {lng: None, lat: None} except Exception as e: print(f地址 {address} 解析失败: {str(e)}) return {lng: None, lat: None}2.2 批量处理优化方案采用分块处理策略避免内存溢出def batch_geocode(input_path: str, output_path: str, api_key: str, chunk_size500): 分块处理Excel地址数据 result [] for chunk in pd.read_excel(input_path, chunksizechunk_size): chunk[coords] chunk[address].apply( lambda x: geocode_address(x, api_key) ) chunk[lng] chunk[coords].apply(lambda x: x[lng]) chunk[lat] chunk[coords].apply(lambda x: x[lat]) result.append(chunk) pd.concat(result).to_excel(output_path, indexFalse)3. 实战避坑指南3.1 地址规范化处理原始地址常见问题及处理方法缺失关键信息补全省市行政区划def complete_address(address): if 省 not in address and 市 not in address: return f北京市{address} # 根据业务设置默认城市 return address特殊字符处理移除换行符、HTML标签等import re def clean_address(text): return re.sub(r[\n\t], , text).strip()3.2 性能优化技巧请求间隔控制添加time.sleep(0.1)避免触发频率限制失败重试机制from tenacity import retry, stop_after_attempt retry(stopstop_after_attempt(3)) def safe_geocode(address, api_key): return geocode_address(address, api_key)多线程加速需注意API频率限制from concurrent.futures import ThreadPoolExecutor with ThreadPoolExecutor(max_workers4) as executor: results list(executor.map(geocode_address, addresses, [api_key]*len(addresses)))4. 坐标体系转换天地图API返回的GCJ-02坐标与其他系统的转换import math def gcj02_to_wgs84(lng, lat): 火星坐标系转WGS84 a 6378245.0 # 长半轴 ee 0.00669342162296594323 # 扁率 def transform(lng, lat): rad_lat lat / 180.0 * math.pi magic math.sin(rad_lat) magic 1 - ee * magic * magic sqrt_magic math.sqrt(magic) dlat (transform_lat(lng - 105.0, lat - 35.0) * 180.0) / ( (a * (1 - ee)) / (magic * sqrt_magic) * math.pi ) dlng (transform_lng(lng - 105.0, lat - 35.0) * 180.0) / ( a / sqrt_magic * math.cos(rad_lat) * math.pi ) return dlng, dlat dlng, dlat transform(lng, lat) return lng - dlng, lat - dlat重要提示涉及不同坐标系的转换时建议在数据结果中注明原始坐标系类型5. 异常处理与日志记录健全的错误处理机制应包含API响应验证if location not in data: raise ValueError(f无效响应: {data})详细日志记录import logging logging.basicConfig( filenamegeocode.log, levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s )结果校验规则经度范围73.66°E ~ 135.05°E纬度范围3.86°N ~ 53.55°N6. 项目部署建议6.1 生产环境配置推荐使用以下架构├── /data │ ├── input/ # 待处理文件 │ └── output/ # 结果文件 ├── /logs # 运行日志 ├── config.ini # API密钥等配置 └── processor.py # 主程序6.2 自动化调度方案使用Windows任务计划或Linux cron实现定时运行# 每天凌晨1点执行 0 1 * * * /usr/bin/python3 /path/to/processor.py实际项目中这套方案成功处理过某物流企业全国30万网点地址的坐标转换将人工需要2周的工作压缩到2小时内完成。最关键的是保证地址文本的规范性和合理的请求间隔控制当遇到北京市海淀区中关村大街这类模糊地址时建议人工补充门牌号等详细信息。

相关文章:

Python+天地图API实战:批量地址转经纬度完整流程(附避坑指南)

Python天地图API实战:批量地址转经纬度完整流程(附避坑指南) 在物流调度、商业选址分析或地图应用开发中,经常需要将大量地址文本转换为精确的经纬度坐标。传统手动操作效率低下,而专业GIS软件又存在学习成本高的问题…...

AI万能分类器完整教程:从部署到实战的保姆级指南

AI万能分类器完整教程:从部署到实战的保姆级指南 1. 引言:告别繁琐训练,拥抱即时分类 想象一下,你刚接手一个客服系统,每天涌入成千上万条用户留言。老板要求你快速把这些留言分成“咨询”、“投诉”、“建议”和“其…...

光纤光栅(FBG)与双光纤光栅(DFBG)的Matlab仿真

Matlab光纤光栅仿真程序FBG 双FBG 光纤光栅(Fiber Bragg Grating,FBG)是一种高性能的全光域传感器,广泛应用于光纤通信、光纤激光、光谱分析等领域。其工作原理基于光在光纤中的驻波效应,能够通过微小的环境变化&…...

DBeaver批量执行SQL报错?一招解决insert into多语句提交难题

1. 为什么DBeaver执行多条INSERT语句会报错? 很多从Navicat转用DBeaver的用户都会遇到一个头疼的问题:明明在Navicat里可以正常执行的批量SQL语句,到了DBeaver就会报错。这个问题我刚开始用DBeaver时也踩过坑,后来才发现是驱动属性…...

openclaw运行起来了,关于token

一,检查 关键信息: ✅ 服务监听在 ws://127.0.0.1:18789(WebSocket) ✅ 生成了新的认证 token ✅ Canvas 服务运行在 http://127.0.0.1:18789/__openclaw__/canvas/ ✅ 浏览器控制服务在 18791 端口 二,🔑 现在你需要的是认证 Token 1. 查看生成的 Token bash #…...

AIGlasses_for_navigation商业应用:养老院室内导引+斑马线过街双模方案

AIGlasses_for_navigation商业应用:养老院室内导引斑马线过街双模方案 1. 引言 想象一下,一位视力逐渐衰退的老人,在养老院宽敞但复杂的走廊里,想独自去餐厅却找不到路;或者,一位需要辅助出行的长者&…...

Cosmos-Reason1-7B多场景:建筑工地安全风险识别与因果推理演示

Cosmos-Reason1-7B多场景:建筑工地安全风险识别与因果推理演示 1. 项目概述 Cosmos-Reason1-7B是NVIDIA开源的一款7B参数量的多模态物理推理视觉语言模型(VLM),作为Cosmos世界基础模型平台的核心组件,专注于物理理解与思维链(CoT)推理能力。…...

Tao-8k辅助LaTeX文档写作:智能公式推导与学术排版

Tao-8k辅助LaTeX文档写作:智能公式推导与学术排版 写论文、做报告,尤其是理工科的朋友,对LaTeX这个排版工具真是又爱又恨。爱它排版出来的文档专业、漂亮,公式工整得像印刷品;恨它那复杂的语法,一个花括号…...

Qwen3-32B-Chat效果展示:RTX4090D上多角色扮演、创意写作、公文生成精彩案例

Qwen3-32B-Chat效果展示:RTX4090D上多角色扮演、创意写作、公文生成精彩案例 1. 开箱即用的高性能AI推理环境 Qwen3-32B-Chat私有部署镜像为RTX4090D 24GB显存显卡深度优化,内置完整运行环境与模型依赖。基于CUDA 12.4和驱动550.90.07的专业调优&#…...

Nanbeige 4.1-3B部署案例:单卡A10G跑通高饱和度JRPG风格AI终端

Nanbeige 4.1-3B部署案例:单卡A10G跑通高饱和度JRPG风格AI终端 1. 项目概述 Nanbeige 4.1-3B像素冒险聊天终端是一款专为游戏爱好者设计的AI对话界面。这个项目将3B参数的大语言模型与复古JRPG视觉风格完美结合,创造出一个既强大又有趣的AI交互体验。 …...

Qwen3-32B多轮对话稳定性展示:WebUI中连续20轮专业领域问答无崩塌

Qwen3-32B多轮对话稳定性展示:WebUI中连续20轮专业领域问答无崩塌 1. 专业级大模型对话稳定性实测 在当今大模型应用中,多轮对话的稳定性是衡量模型实用性的关键指标。我们针对Qwen3-32B-Chat私有部署镜像进行了深度测试,在RTX4090D 24G显存…...

MusePublic艺术创作引擎Keil5开发:嵌入式艺术装置编程

MusePublic艺术创作引擎Keil5开发:嵌入式艺术装置编程 1. 项目概述与核心价值 想象一下,你正在为一个艺术展览创作一个交互式装置:当观众靠近时,装置会自动生成一幅独特的艺术人像,并通过LED矩阵显示出来。这种将AI艺…...

从XSS到权限提升:用STRIDE模型复盘我们被黑掉的SaaS平台

SaaS平台安全攻防实录:基于STRIDE模型的渗透路径分析与防御实践 凌晨3点17分,我们的监控系统突然发出刺耳的警报声——某个核心数据库正在被异常导出。当安全团队赶到时,攻击者已经通过前端评论区的XSS漏洞完成了从用户权限到超级管理员权限的…...

Z-Image-Turbo-rinaiqiao-huiyewunv 在嵌入式开发中的应用:STM32项目代码生成与优化建议

Z-Image-Turbo-rinaiqiao-huiyewunv 在嵌入式开发中的应用:STM32项目代码生成与优化建议 1. 引言:当嵌入式开发遇上智能助手 如果你做过STM32开发,肯定有过这样的经历:项目紧,任务重,一个简单的UART通信&…...

GLM-4-9B-Chat-1M开发者必看:从模型加载到Chainlit交互的完整链路

GLM-4-9B-Chat-1M开发者必看:从模型加载到Chainlit交互的完整链路 想快速上手一个支持百万字长文本对话的开源大模型吗?今天,我们就来手把手带你部署和调用GLM-4-9B-Chat-1M,并给它配上一个简单好用的网页聊天界面。 GLM-4-9B-C…...

删除电脑重复文件Easy Duplicate Finde

链接:https://pan.quark.cn/s/30bfde8bf41cEasy Duplicate Finder是查找和删除重复的照片,文档,MP3,视频等的强大工具。它使删除重复文件变得轻松而有趣。只需将文件夹拖放到程序窗口中并开始扫描。 Easy Duplicate Finder将完成剩…...

Java集合与泛型:从基础到高级应用

Java 集合与泛型:从基础到高级应用(2025–2026 生产视角) Java 集合框架(Collection Framework) 泛型(Generics)是 Java 5 以来最核心的语言级基础设施。 到 2025–2026 年,集合框架…...

Clawdbot安全部署指南:用Git管理配置文件的版本控制

Clawdbot安全部署指南:用Git管理配置文件的版本控制 1. 为什么需要版本控制 你有没有遇到过这种情况:修改了Clawdbot的配置文件后,发现效果不如预期,想要回退到之前的版本,却怎么也找不到之前的配置了?或…...

从零开始:通义千问1.8B-Chat WebUI部署完整流程

从零开始:通义千问1.8B-Chat WebUI部署完整流程 想在自己的服务器上快速搭建一个轻量级的AI对话助手吗?今天,我就带你一步步完成通义千问1.8B-Chat模型的WebUI部署。这个版本经过GPTQ-Int4量化,显存需求不到4GB,用普通…...

Java网络编程:从基础到Socket应用

Java 网络编程:从基础到 Socket 应用(2025–2026 生产视角) Java 网络编程的核心从没变过:Socket 是传输层抽象,但写法和性能模型在 Java 21(尤其是虚拟线程时代)发生了根本性颠覆。 2025–202…...

Qwen3.5-9B完整指南:统一VLM架构下Gradio Web UI实战部署

Qwen3.5-9B完整指南:统一VLM架构下Gradio Web UI实战部署 1. 引言 Qwen3.5-9B作为新一代多模态大模型,在视觉-语言统一架构上实现了重大突破。本文将带您从零开始,完成这个强大模型的Gradio Web UI部署全过程。无论您是AI开发者还是企业技术…...

智能客服新玩法:OpenClaw + RAGFlow,效率直接飞起

最近OpenClaw太火了,作为AIOps领域先行者,我也在探索OpenClaw如何用于AIOps领域。用OpenClaw越久,我就越觉得我们之前很难搞定的问题,在它这里都可以轻松搞定。 今天跟大家分享一下用OpenClaw配合RAGFlow做智能客服的思路。 因为…...

3步实现Figma全界面汉化:面向设计师的零成本解决方案

3步实现Figma全界面汉化:面向设计师的零成本解决方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 在全球化设计协作中,语言障碍常导致国内设计师使用Figma时面…...

MATLAB数据清洗中的5个常见坑及如何避免(含代码示例)

MATLAB数据清洗实战:避坑指南与高效代码示例 引言 数据清洗是数据分析流程中最容易被低估却又至关重要的环节。在MATLAB环境中,即使是最基础的数据预处理操作,也可能因为对函数特性的不了解或数据特性的忽视而埋下隐患。我曾在一个气象数据分…...

Qwen3.5-9B企业应用实战:金融文档理解+图表分析+摘要生成一体化

Qwen3.5-9B企业应用实战:金融文档理解图表分析摘要生成一体化 1. 引言:金融文档处理的智能化革命 金融行业每天产生海量的PDF报告、财报数据、市场分析图表等非结构化文档。传统的人工处理方式面临三大痛点: 效率瓶颈:分析师需…...

Warcraft III 帧率优化实战指南:从卡顿到流畅的完整解决方案

Warcraft III 帧率优化实战指南:从卡顿到流畅的完整解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一、快速诊断:找出…...

VMware vSphere实战:5分钟搞定vApp创建与资源分配(附避坑指南)

VMware vSphere实战:5分钟搞定vApp创建与资源分配(附避坑指南) 在虚拟化技术日益普及的今天,VMware vSphere作为企业级虚拟化平台的代表,其功能强大但操作复杂度也相对较高。对于刚接触vSphere的运维人员或开发者来说&…...

构建Lingbot深度估计Web演示平台:前后端分离架构实战

构建Lingbot深度估计Web演示平台:前后端分离架构实战 最近在做一个挺有意思的项目,需要把Lingbot深度估计模型包装成一个在线服务,让不熟悉代码的人也能轻松上传图片、查看深度图效果。一开始想用传统的全栈模式,但考虑到后期维护…...

高效解放双手:番茄小说下载工具全方位使用指南

高效解放双手:番茄小说下载工具全方位使用指南 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 在数字阅读时代,离线获取和管理小说内容始终是读者的核心…...

STM32F103C8串口升级避坑指南:如何避免Flash写入失败和跳转错误

STM32F103C8串口升级避坑指南:如何避免Flash写入失败和跳转错误 在嵌入式开发中,串口升级是一种经济高效的固件更新方式,尤其对于资源受限的STM32F103C8这类Cortex-M3内核微控制器。然而,从实际项目经验来看,约60%的开…...