如何让ExifTool使用文件标签外数据并自定义GPX文件头元素
用ExifTool生成GPX时动态指定和内容
需求说明
- 借助ExifTool的高级格式化功能,从目录中图片的GPS数据生成GPX文件
- 希望直接通过命令行指定字符串,填入GPX文件开头的
<name>和<desc>标签 - 不采用先生成占位符再替换的繁琐方案,优先选择命令行传参或读取shell变量的方式
解决方案
利用ExifTool的-userParam参数可以实现命令行传参,在格式化文件中直接引用这些参数即可。
- 编写GPX格式化文件
创建一个格式化文件(例如命名为gpx_template.txt),内容如下:
<?xml version="1.0" encoding="UTF-8"?> <gpx version="1.1" creator="ExifTool"> <name>$userParam{GPXName}</name> <desc>$userParam{GPXDesc}</desc> <#foreach $file in @files> <#if $file.GPSLatitude> <trkpt lat="$file.GPSLatitude#" lon="$file.GPSLongitude#"> <#if $file.DateTimeOriginal> <time>$file.DateTimeOriginal#</time> </#if> </trkpt> </#if> </#foreach> </gpx>
- 命令行传参生成GPX
直接在命令行通过-userParam传递<name>和<desc>的内容:
exiftool -config gpx_template.txt -userParam GPXName="周末登山轨迹" -userParam GPXDesc="2024年4月郊野登山路线记录" -o output.gpx /path/to/your/images
- 读取shell变量传参
如果已经在shell中定义了相关变量(比如GPX_NAME和GPX_DESC),可以直接引用:
export GPX_NAME="城市骑行路线" export GPX_DESC="2024年春季城市通勤骑行轨迹" exiftool -config gpx_template.txt -userParam GPXName="$GPX_NAME" -userParam GPXDesc="$GPX_DESC" -o output.gpx /path/to/your/images
这种方式无需后续修改生成的GPX文件,直接一步到位填充所需内容。
内容的提问来源于stack exchange,提问作者WGroleau
相关产品推荐
相关产品推荐

