使用 ExifTool 为照片批量添加和复制 GPS 信息

在日常摄影中,我们常常会遇到这样一个问题:使用相机(如 Nikon Z30 等非 GPS 相机)拍摄的照片并没有记录位置信息。如果你希望在后期整理或分享时,让照片具备地理信息,就需要借助专业工具来补充或批量写入 GPS 数据。

本文将介绍如何使用强大的命令行工具 ExifTool 来解决这个问题,包括:
1. 为照片添加 GPS 信息;
2. 将一张照片的 GPS 信息复制到另一张或多张照片中;
3. 检查和验证修改结果。

什么是 ExifTool?

ExifTool 是一款非常强大的命令行工具,可以读取、写入和编辑图片、音视频等文件的元数据(Metadata)。它支持几乎所有的照片格式,包括 JPEG、PNG,以及各大相机品牌的 RAW 格式(NEF、CR2、ARW 等)。

官网地址:https://exiftool.org/

用 ExifTool 安全地把一张照片的 GPS 信息复制到其它照片(NEF/RAW)——完整实操指南

参考:ExifTool 官方文档 https://exiftool.org/
本文将结论先行:ExifTool 支持直接往 RAW 文件(包括 NEF)写 GPS 信息,并提供默认的 _original 文件自动备份。

📝 概览(结论先行)
• ExifTool 能够直接写入 RAW(NEF、CR2、ARW 等),GPS 信息可以和 EXIF、XMP 一起保存。
• macOS 上推荐用 Homebrew 安装,也可从 exiftool.org 下载 .pkg。
• 操作建议:先备份 → 先验证 → 小规模试运行 → 再批量处理。

1)准备工作(安装 + 备份)

安装 ExifTool

推荐 Homebrew 安装:

brew install exiftool

或直接下载 Mac 安装包:https://exiftool.org/

验证安装:

exiftool -ver

备份

虽然 ExifTool 默认会保留 _original 文件(参考官方 Backups 说明),但强烈建议在大规模操作前完整复制目录。

2)读取并验证源文件 GPS 标签

在写入前先确认源文件 GPS 信息存在哪些 group:

显示所有 GPS 相关字段,含组名

exiftool -a -G1 -s -gps* source_with_gps.nef

只看 EXIF GPS

exiftool -gps:all source_with_gps.nef

•	-a:显示重复标签
•	-G1:显示标签组(EXIF、XMP 等)
•	-s:显示原始标签名

(参见官方 Tag Groups 文档)

3)单张复制 GPS 信息

把源文件的 GPS 信息复制到目标文件:

exiftool -tagsFromFile source_with_gps.nef -gps:all target_without_gps.nef

•	默认会生成 target_without_gps.nef_original(安全备份)。

如果你已确认无误且不需要 _original:

exiftool -P -overwrite_original_in_place
-tagsFromFile source_with_gps.nef -gps:all target_without_gps.nef

•	-P:保留文件时间戳
•	-overwrite_original_in_place:覆盖原文件,并尽量保持文件系统属性(官方 In-place Editing)

4)批量操作:一张模板 → 整个目录

假设 source.jpg 含 GPS,要把其 GPS 写入当前目录下所有 NEF:

cd /path/to/folder
exiftool -tagsFromFile ../source.jpg -gps:all -ext NEF -r .

解释:
• -ext NEF:只处理 NEF 文件
• -r .:递归处理子目录
• 避免 *.*,否则可能匹配 _original 或 .DS_Store 文件(官方 FAQ 有提醒)

覆盖写入(危险操作,需先备份):

exiftool -P -overwrite_original_in_place
-tagsFromFile ../source.jpg -gps:all -ext NEF -r .

5)从 XMP Sidecar 导入 GPS

如果 NX Studio 把 GPS 写在 .xmp 文件:

exiftool -tagsFromFile image.nef.xmp -gps:all image.nef

ExifTool 会把 .xmp 里的 GPS 信息同步到 NEF 文件(参考 XMP Tag Handling)。

6)按 GPX 轨迹打点

若有 GPX 轨迹文件,可根据照片时间自动匹配 GPS:

exiftool -geotag track.gpx *.NEF

支持时区偏移、插值(详见官方 Geotagging 文档)。

7)手动写入经纬度

如果你手动知道坐标:

exiftool -GPSLatitude=39.9042 -GPSLatitudeRef=N
-GPSLongitude=116.4074 -GPSLongitudeRef=E photo.nef

使用 -n 可避免格式化,直接写入数值。

8)验证与回滚

验证写入结果

exiftool -a -G1 -s -gps* target.nef

确认 GPSLatitude、GPSLongitude、GPSDateStamp 等标签已写入。

回滚方法
• 如果有 _original 文件:手动还原或使用:

exiftool -restore_original target.nef

•	若已用 -overwrite_original_in_place:只能依赖事前备份。

9)常见坑 & 最佳实践

✅ 先备份,再操作
✅ 先测试 2–3 张,再批量运行
✅ 避免 *.*,用 -ext 精确指定文件类型
✅ 注意不同软件读取的 group(EXIF vs XMP)
✅ 保留 _original 是自动安全网

10)批量脚本示例(macOS / bash)

保存为 copy_gps_from_template.sh,然后:

chmod +x copy_gps_from_template.sh
./copy_gps_from_template.sh source_with_gps.jpg /path/to/target_dir

脚本内容:

#!/usr/bin/env bash
set -euo pipefail

SOURCE=”$1” # 模板文件(有 GPS 的图片)
TARGET_DIR=”$2” # 目标目录
EXT=”NEF” # 要处理的扩展名

if [ -z “$SOURCE” ] || [ -z “$TARGET_DIR” ]; then
echo “Usage: $0
exit 1
fi

echo “Dry-run: files that WOULD be processed:”
find “$TARGET_DIR” -type f -iname “*.${EXT}” -print | sed -n ‘1,50p’
echo “—-“
echo “To actually run, edit script and uncomment exiftool command.”

实际运行(保留 _original)

exiftool -tagsFromFile “$SOURCE” -gps:all -ext “$EXT” -r “$TARGET_DIR”

覆盖原文件(危险)

OVERWRITE_FLAGS=”-P -overwrite_original_in_place”

exiftool $OVERWRITE_FLAGS -tagsFromFile “$SOURCE” -gps:all -ext “$EXT” -r “$TARGET_DIR”

echo “Done. Verify with: exiftool -a -G1 -s -gps*

📌 总结
• ExifTool 是处理照片 GPS 信息的标准工具。
• 既可以从一张“模板”照片复制 GPS,也可以从 XMP sidecar 或 GPX 轨迹导入。
• 默认 _original 文件机制提供了安全保障,建议初期不要关闭。
• 批量处理时,要谨慎,推荐小规模试运行。

要不要我帮你再写一份 针对“先小规模测试 → 大规模批处理”的实操清单(比如一个三步 checklist,你只要按顺序执行,就能避免 90% 的坑)?

Comments

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×