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

使用 Python + 百度翻译 批量翻译 ArcGIS Shapefile 字段

使用 Python + 百度翻译 批量翻译 ArcGIS Shapefile 字段

以下是优化后的高质量博客文章,结构清晰、内容更准确、专业且适合新手:


使用 Python + 百度翻译 批量翻译 ArcGIS Shapefile 字段

背景介绍

在处理地理数据时,我们经常需要将中文地名、行政区名称翻译成英文,特别是在制作国际地图、参与跨国项目或数据共享时。手动一个一个翻译既费时又容易出错。

这篇教程将教你使用 Python + ArcPy + 百度翻译API,实现对 Shapefile(矢量图层)中某个字段进行自动批量翻译,极大提高工作效率。

代码功能说明

核心功能
该脚本可以自动读取 ArcGIS Shapefile 中的指定字段(如地名 name),调用百度翻译 API 将其翻译成目标语言(中文→英文或英文→中文),然后把翻译结果写入一个新的字段中。

适用场景

  • 中文地名批量翻译成英文
  • 制作双语地图
  • 国际项目数据标准化处理

运行后效果
脚本运行完成后,你会在属性表中看到新增一个字段(如 name_en),里面已填入翻译好的英文名称,同时终端会打印每条记录的翻译前后对比。

运行环境准备

运行此脚本需要以下环境:

  1. ArcGIS 软件:ArcGIS Desktop 10.5+ 或 ArcGIS Pro(强烈推荐 Pro)
  2. Python:使用 ArcGIS 自带的 Python 环境(通常为 Python 3.7~3.11)
  3. 百度翻译开放平台账号:需要申请免费的 APPID 和 SecretKey

重要:必须在 ArcGIS 自带的 Python 环境中运行,否则 ArcPy 无法导入。

详细运行步骤

1. 环境准备

  • 安装 ArcGIS Pro 或 ArcGIS Desktop
  • 申请百度翻译 API(推荐):
    • 打开 https://api.fanyi.baidu.com/
    • 注册并创建通用翻译应用,获取 APPID密钥

2. 依赖安装

打开 ArcGIS 自带的 Python Command Prompt(推荐)或 Anaconda Prompt,执行以下命令:

pip install requests

为什么需要这一步?因为脚本使用 requests 库调用百度翻译接口,默认可能未安装。

3. 代码修改(最关键一步)

新建一个 .py 文件,例如 translate_shapefile.py,复制以下代码并修改关键参数:

# -*- coding: utf-8 -*-
import arcpy
import requests
import hashlib
import random# =================== 参数设置 ===================
fc = r"【your_shapefile_path】"                    # ← 修改为你的 .shp 文件路径
field_to_translate = "name"                       # 要翻译的字段名称
lang = "en"                                       # 目标语言:"en"=英文,"zh"=中文
appid = "【your_baidu_appid】"                     # ← 修改为你的百度 APPID
secretKey = "【your_baidu_secretKey】"             # ← 修改为你的百度密钥
out_field = field_to_translate + "_" + lang       # 新增字段名称(如 name_en)# =================== 检查并创建新字段 ===================
field_names = [f.name for f in arcpy.ListFields(fc)]
if out_field not in field_names:arcpy.AddMessage(f"创建新字段: {out_field}")arcpy.AddField_management(fc, out_field, "TEXT", field_length=255)# =================== 百度翻译函数 ===================
def baidu_translate(query, from_lang="auto", to_lang="zh"):url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'salt = str(random.randint(32768, 65536))sign = appid + query + salt + secretKeysign = hashlib.md5(sign.encode()).hexdigest()params = {'q': query,'from': from_lang,'to': to_lang,'appid': appid,'salt': salt,'sign': sign}try:r = requests.get(url, params=params, timeout=10)result = r.json()return result['trans_result'][0]['dst']except:return query  # 翻译失败则返回原文# =================== 批量翻译主逻辑 ===================
print("开始翻译,请稍候...")
with arcpy.da.UpdateCursor(fc, [field_to_translate, out_field]) as cursor:count = 0for row in cursor:if row[0] and row[0].strip() != "":translated = baidu_translate(str(row[0]), "auto", lang)row[1] = translatedcursor.updateRow(row)print(f"{row[0]}  →  {translated}")count += 1print(f"翻译完成!共处理 {count} 条记录,结果已写入字段: {out_field}")

注意:请务必修改以下三处内容:

  • fc → 你的 Shapefile 完整路径
  • appidsecretKey → 你的百度翻译账号信息

4. 执行命令

  1. 保存文件为 translate_shapefile.py
  2. ArcGIS Python Command Prompt 中切换到脚本所在目录
  3. 执行命令:
python translate_shapefile.py

5. 验证结果

  • 打开 ArcGIS Pro → 添加该 Shapefile
  • 打开属性表,查看是否新增了 name_en(或类似)字段
  • 检查字段内是否已填入翻译后的内容

核心代码解析

  1. 百度翻译函数 baidu_translate
    像“快递员”一样,把中文发给百度服务器,然后把翻译好的英文带回来。核心是构造正确的签名(sign),这是百度要求的身份验证方式。

  2. UpdateCursor
    这是 ArcPy 中最强大的“批量修改工具”。它像一把“光标”,一行一行遍历属性表,读取原文、翻译后直接写回新字段,非常高效。

  3. 创建新字段
    先检查字段是否存在,如果没有就自动创建一个文本字段,避免脚本报错。

  4. 错误处理
    如果翻译失败(网络问题、频率超限等),自动返回原文,防止数据丢失。

常见问题解决

问题1ImportError: No module named arcpy
解决:必须使用 ArcGIS 自带的 Python 环境运行,不能用系统 Python。

问题2:翻译后全是原文或报错
解决:检查 APPID 和 SecretKey 是否正确复制,确认已开通百度翻译服务。

问题3:字段内容太长被截断
解决:可将 field_length=255 改为 5001000

问题4:翻译速度慢 / 被限制
解决:百度免费版有 QPS(每秒请求数)限制,建议每次翻译后加 time.sleep(1) 延时。

问题5:中文乱码
解决:确保文件保存为 UTF-8 编码。


http://www.jsqmd.com/news/384918/

相关文章:

  • 基于SSM的中诚房屋中介管理系统[SSM]-计算机毕业设计源码+LW文档
  • STM32F1介绍 - LI,Yi
  • 开放式厨房适合用集成灶吗?选哪个牌子好?2025选购指南出炉 - 匠言榜单
  • Springboot3+vue3软件商城共享系统 软件公司的售前售后服务系统
  • 【CVPR 2025即插即用】卷积模块篇 | GBConv轻量级门控瓶颈卷积,适合图像分类、目标检测、实例分割、语义分割、图像去噪、边缘检测、医学图像分割、遥感目标检测等CV任务通用,涨点起飞
  • 使用BEiT模型进行CIFAR-100图像分类:迁移学习实战指南
  • 2000-2024年上市公司党组织参与公司治理数据+代码
  • 2003-2024年地级市大数据采集和处理能力
  • 【前端开发之JavaScript】(三)JS基础语法中篇:运算符 / 条件 / 循环 / 数组一网打尽
  • 关于Linux系统进程
  • 使用Jenkins部署后端项目(Maven)
  • Jenkins如何导入/导出插件
  • Android Studio汉化备忘
  • agentscope怎么在对话的时候调用记忆的
  • WinForms:菜单控件ToolStripMenuItem详解
  • 少走弯路:9个AI论文软件测评!研究生毕业论文写作必备工具推荐
  • 题解:ABC445F Exactly K Steps 2
  • 基于微信小程序的二手书店管理系统的设计与实现
  • 强烈安利! 降AIGC软件 千笔·降AIGC助手 VS Checkjie,本科生专属神器!
  • 基于 Flutter OpenHarmony 的正则表达式测试器研发实战
  • 小白救星!降AI率软件 千笔 VS WPS AI,MBA专属神器
  • AI元人文:DOSRing
  • 手把手教你用 Python 实现批量文件夹 RAR 压缩
  • 别再瞎找了!继续教育论文利器 —— 千笔·专业论文写作工具
  • 瞧瞧2026国内口碑好的双片全自动钉箱机企业推荐排行,河北双片全自动钉箱机排行榜单宏海纸箱设备层层把关品质优 - 品牌推荐师
  • 拖延症福音:AI论文软件 千笔ai写作 VS 灵感ai
  • 2026固定污染源VOCs检测仪厂家盘点|实力企业+优质品牌推荐 - 品牌推荐大师1
  • 函数栈帧(Function Stack Frame)之三
  • 学霸同款 8个降AI率平台深度测评,本科生必看!
  • Word排版技巧:轻松解决孤行问题