这篇不是讲 EXIF 怎么读。读出经纬度很容易,难的是别把它理解错。
项目里第一次遇到这个问题,是因为一批无人机照片已经带了 GPS。直觉上看,好像目标位置已经在照片里了,只要把坐标取出来就能入库、上图、派单。
后来真正对数据时才发现,这个理解太快了。
先问一句:这个坐标是谁的位置
照片里的经纬度,更多时候记录的是拍摄那一刻的相机或无人机位置。它能说明“飞机在哪里拍下这张照片”,不一定能说明“照片里那个工程车、烟点、图斑边界在哪里”。
如果只是做照片归档,这个坐标已经有用。它能把照片放到大概的飞行轨迹上,也能帮人回到拍摄现场附近。
如果要做目标定位,它就不够。
因为目标位置还取决于:
- 相机朝向哪里;
- 云台俯仰角是多少;
- 飞行高度用的是相对高度还是绝对高度;
- 目标落在画面哪个像素;
- 地面是不是平的;
- 拍摄时刻对应的姿态数据是否可靠。
这些条件缺任何一个,最后得到的坐标都应该被标成“估算”或“不可信”,不能当作精确点位直接进入业务流。
我后来形成的一个判断
可以把无人机照片里的位置信息分成三层:
| 层级 | 说明 | 适合做什么 |
|---|---|---|
| 拍摄位置 | EXIF / XMP 里的相机或无人机经纬度 | 照片归档、轨迹回放、现场索引 |
| 画面方向 | 姿态、航向、云台角度、镜头信息 | 判断照片大概看向哪里 |
| 目标落点 | 像素位置经过相机模型和地面模型换算后的坐标 | 线索上图、业务核查、派单处置 |
很多误会来自把第一层直接当成第三层。
下次项目里怎么处理
我的经验是,产品和接口文档里要把字段名写得更笨一点,也更明确一点。
不要只写 lng、lat。至少要区分:
photoLng / photoLat 拍摄位置
targetLng / targetLat 目标估算位置
positionSource 坐标来源
positionConfidence 坐标可信度
这样前端展示、后端入库、算法回传、人工复核才不会混成一锅。
一句备忘
看到照片 GPS,先别急着上图。先问它代表的是“飞机在哪”,还是“目标在哪”。这一个问题能提前挡住很多后面的返工。