照片 GPS 转 GPX
把受支持的本地 JPEG 原始 GPS 按明确 UTC 排序导出,保留照片原件、出处及完整 GPX/JSON/CSV ZIP。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
把旅行照片原件内嵌的 GPS 位置生成稀疏 GPX 轨迹或航点集合。保留每张原始照片,核查精确 GPS UTC 顺序、同时间歧义与坐标出处。
如何使用
- 选择本次旅行的所有 JPEG 照片原件。
- 选择轨迹或航点,设置轨迹时间间隔阈值;仅在了解缺失基准时确认 WGS84。
- 运行后逐行检查 UTC、源序号、坐标及同时间歧义。
- 下载 ZIP,在兼容读取器打开 GPX,用 JSON 与原件核查出处。
支持范围与限制
1–500 张 JPEG 原件,每张最多 10 MiB,合计最多 100 MiB。文件名标签最多 512 个 UTF-8 字节;操作系统文件选择器可能对实际文件名施加更短限制。
仅支持 8 位基线 SOF0、单次交错扫描、末尾 EOI,以及一个含经典小端或大端 TIFF 的 Exif APP1,GPS 版本为 2.3/2.4。渐进式 JPEG、BigTIFF、多图 MPF、JUMBF/APP11、XMP、尾随内容及不支持的结构整批拒绝。
每张照片最多 4096 个 JPEG 标记、4 个 IFD 目录、每目录 512 项、每文件 1024 项;整队最多 100000 个 IFD 项。未知 GPS 标签、目录别名或循环、结构重叠、非法值或必填字段缺失均原子失败。
必须由 GPSDateStamp 和 GPSTimeStamp 明确提供公历 0001–9999 年的 UTC。时、分为整数,秒须能精确表示到最多 9 位小数。不从本地时钟、相机时间、文件名或文件时间补值;不支持闰秒和循环小数。
支持声明为 WGS-84/WGS84 的基准;缺失基准时必须明确确认按 WGS84 处理,已声明其他基准始终拒绝。JSON 保留精确原始有理数;GPX 坐标向零截断至 12 位小数。精确 +180° 经度写为 −180°,并记录等价标记。
每张照片对应一个点,按精确 UTC 排序;相同时间保持选择顺序并标注歧义。轨迹只在相邻时间差严格大于所选 0–86400 秒阈值时分段;航点模式没有轨迹分段。
结果是稀疏照片位置,不是连续实测路线。不添加道路匹配、插值、地理编码或 GPX 海拔。保留原始海拔、参考值、版本,以及每个 GPS 字段的类型、数量、源字节范围和 SHA256;关键字段另保留原始十六进制。 若 GPS 字段 rawHex 为 null,请按报告中的绝对 valueOffset,从 JPEG 原件读取 byteLength 个字节;SHA256 标识这份精确原始值。
屏幕列出所有点,复制内容为有界标量摘要。下载 photo-gps-package.zip 获得所有 JPEG 原字节、photo-points.gpx、完整 photo-points.json 和安全、全字段引号的 photo-points.csv。CSV 文本加单引号前缀;JSON 和原件保留精确文本。
保护性输出限制为 GPX 4 MiB、JSON 8 MiB、CSV 8 MiB、无压缩 ZIP 128 MiB;更严格的输入预算会先限制规模。不静默跳过照片,拒绝或取消均不返回部分结果包。
处理留在当前浏览器,不上传文件、文件名或坐标。解析器检查有限 JPEG/Exif 结构,不解码像素,不证明源 GPS 准确、完整 JPEG/Exif 合规或设备兼容。
操作示例
示例输入
自制 934 字节基线 JPEG,文件名 little-endian.jpg,声明 WGS-84,GPS UTC 为 2026-10-08T12:34:56.7890123Z。
示例参数
轨迹;严格超过 3600 秒才分段;不假定缺失基准。
示例输出
1 个有出处的点:31.220083333333、121.482416666666;410 字节 GPX、1 个分段、4 个完整 ZIP 成员。
出现问题时
任一照片不支持、非法、缺少字段或超预算都会停止整队。选择受支持的原件或修正来源后重试;取消丢弃未完成输出,可重新运行同一批所选文件。
常见问题
可以从相机时钟或文件名推断时间吗?
不可以。照片必须明确内嵌 GPS UTC 日期与时间;推断本地时区或缺失拍摄时间可能排错顺序。
连接线是否说明实际步行路线?
已知的只有照片位置。连接线与时间分段不证明两张照片间的路径;连接可能产生误导时请选择航点模式。
为什么有效照片仍不支持?
本工具使用有限基线 JPEG/Exif GPS 配置。渐进式 JPEG 或合法的转换结构、未来及保留结构可能超出范围;不会静默漏掉源照片。