这次实验拿到的是一张嫌疑人手机里的照片。尽可能从图里找信息,最后判断照片大概是在哪里拍的。

先看图片本身
解压拿到 IMG_5660.JPG 后,先在系统详细信息里看了一遍。照片是 iPhone 12 拍的,带有 GPS 信息和拍摄时间。这里的内容只是一个初步线索,不能因为照片里有 EXIF 就直接认定它没有被处理过。

用 ExifTool 再读一次。这个工具把 JPEG 里的 EXIF、GPS、Apple MakerNote 等字段都列得比较清楚,比系统属性页更适合留作取证记录。
exiftool IMG_5660.JPG
# 需要十进制度时加 -n
exiftool -n -GPSLatitude -GPSLongitude -GPSAltitude \
-GPSHPositioningError IMG_5660.JPG

从输出里能读到几个比较有用的字段:
Camera Model Name : iPhone 12
Date/Time Original : 2023:03:05 16:41:09.359+08:00
GPS Latitude : 28 deg 43' 7.24" N
GPS Longitude : 115 deg 53' 0.73" E
GPS Horizontal Positioning Error: 3.937998073 m
GPS Img Direction : 43.41012572
GPS Horizontal Positioning Error 是这次定位的水平误差估计,约 3.94 米。它不是说拍摄点一定就在半径 3.94 米的圆里,而是手机当时给出的精度信息。周围遮挡、卫星信号和网络辅助定位都会影响它。
经纬度是怎么来的
ExifTool 默认给的是度分秒:
28 deg 43' 7.24" N
115 deg 53' 0.73" E
地图搜索一般更方便用十进制度。公式很简单:
十进制度 = 度 + 分 / 60 + 秒 / 3600
算下来:
纬度 = 28 + 43 / 60 + 7.24 / 3600 = 28.7186778
经度 = 115 + 53 / 60 + 0.73 / 3600 = 115.8835361
所以谷歌地图里可以直接搜索:
28.718678, 115.883536
这里有一个容易填反的点。纬度范围是 -90 到 90,经度范围是 -180 到 180。在普通地图搜索框里,按“纬度, 经度”输入。如果某个地图接口要求 longitude,latitude,就要按它自己的参数格式来。
照片 EXIF 里的 GPS 一般是 WGS-84 坐标。谷歌地图可以直接用原值;高德地图常用 GCJ-02,如果直接把 WGS-84 原值填进高德,点位会偏一段距离。按常见转换算法,本图在谷歌地图中应使用:
28.715340, 115.888394
这类几百米的偏移是坐标系造成的,和手机自身的几米定位误差不是一回事。
第一次定位
把坐标直接放进地图后,定位结果落在南昌市区。最开始地图上的行政区显示和我预期的不太一致,而且点位在城镇街道附近。照片里却很明显有水面、船、桥和一座塔。

所以我没有直接把第一个地名当成答案,而是沿着坐标附近的赣江去看。照片如果确实在这附近拍,画面里的东西应该能在地图上找到对应。
顺着赣江找船和桥
在江边区域查看后,很快找到了南昌舰主题园和赣江大桥。这个位置和原图的水面、船体、桥梁关系比较接近。

我又用地图测距看了一下,坐标点到南昌舰一带大约四百米。这个距离不能单独作为结论,但至少没有出现隔着一大片城区或完全不在同一段江岸的情况。

接着打开附近全景图。这里是最花时间的一步,因为地理坐标只能告诉我“人在附近”,桥和塔能不能从这个角度看见,才更接近拍摄现场。


全景里的塔和桥与原图中的地物能对应上。结合坐标、江岸环境、南昌舰、赣江大桥和全景图,最终区域判断为:江西省南昌市红谷滩区,赣江市民公园绿道、南昌舰主题园附近。