最近3年多去了不少城市,拍了不少照片,因此萌生了写个程序提取照片位置信息,转换为轨迹点画在一张地图上的想法。
导出 GPX 文件
使用 GeoSetter 软件批量提取并导出图像 GPS 信息,保存为 GPX 文件,下面是一段 .gpx 文件的记录点格式。
1 | <trkpt lat="35.94073611" lon="120.17107500"> |
读取 GPX 文件数据
直接使用 Python 自带的 xml 库完成读取 。
1 | import xml.dom.minidom as xdom |
WGS84 转 GCJ02,解决高德坐标偏移
做过地图相关开发的同学肯定会遇到这样一个问题:同样的经纬度坐标,在谷歌地图和高德地图上的位置是不一样的。
常用地图坐标系介绍
- WGS-84:是使用最广泛的坐标系,也是世界通用的坐标系,GPS 设备得到的经纬度就是在 WGS84 坐标系下的经纬度。通常底层接口( HTML5 Geolocation 或 iOS、安卓 API )得到的定位信息都是 WGS84 坐标系。
- GCJ-02:又被称为火星坐标系,中国坐标偏移标准,高德地图、腾讯地图以及 Google 中国区地图使用。
- BD-09 :百度坐标偏移标准,百度地图使用。
Python 实现 GPS 偏移校正 ( WGS-84 ) 到 ( GCJ-02 )
1 | import math |
输出 JS 文件
1 | import os |
为了方便的处理多条数据,把上面 Python 的部分写成一个 procXml 函数。
1 | def main(): |
对位置数据进行可视化展示
1 |
|
参考: 高德地图 API 散点示例