利用Python提取图片经纬度并锁定拍照地点
一、原理
1.图片必须具有经纬度信息
2.经纬度格式转换
2.1 gps点坐标的两种表示方式(误差还是有的)
2.1.1 十进制换度分秒
例:经纬度115.46513298108795,38.83474699749353
2.1.2 度分秒换十进制
2.1.3 实际距离换算
地球子午线长是39940.67公里,纬度改变一度合110.94公里,一分合1.849公里,一秒合30.8米,赤道圈是40075.36公里,北京地区纬在北纬40度左右,纬度圈长为40075*sin(90-40),此地经度一度合276公里,一分合1.42公里一秒合23.69米。
地球赤道上环绕地球一周走一圈共 40075.04公里,而這一圈分成360,而每1°(度)有60’,每一度一秒在赤道上的长度计算如下:
40075.04km/360°=111.31955km
111.31955km/60’=1.8553258km=1855.3m
而每一分又有60秒,每一秒就代表 1855.3m/60=30.92m
任意两点距离计算公式为:
d=111.12cos{1/[sinφasinφb十 cosφacosφbcos(λb—λa)]}
其中:
- a点经度,纬度分别为λa和φa,
- b点经度、纬度分别为λb和φb,
- d为距离。
结论
1°经度差对应的东西方向的距离是与其纬度有密切关系的。
赤道上经度相差1°对应的弧长大约是111千米
具体数据如下:
纬度 1°经度差对应的东西距离
20° 104公里
26° 100公里
30° 96公里
36° 90公里
40° 85公里
44° 80公里
51° 70公里
1、经纬度在不同地区,每度距离差是不同的,如果假定地球是完美的球体(这样假设误差不是很大)的话,纬度为 b 的地区:
- 纬度变化一度,球面南北方向距离变化:πr/180 …111.7km
- 经度变化一度,球面东西方向距离变化:πr/180cosb …111.7cosb
- 比如北京 b = 40、cosb = 0.766,经度变化1度,则东西方向距离变化 85.567km
2、不同经度不一样,在南极、北级,所有的经度线都汇集在南、北极的点上,经度之间的距离为0,在赤道,经度之间的距离最大。
- 经度变化一度,球面东西方向距离变化:πr/180cosb …111.7cosb (r为地球半径,b为纬度)
- 纬度之间的距离是一样的,纬度变化一度,球面南北方向距离变化:πr/180 …111.7km (r为地球半径)
3.根据经纬度定位
二、python调用高德api进行图片定位
1.main.py源码
代码如下(示例):
2.position_utils.py源码
代码如下(坐标转换示例):
将需要定位的图片放到指定路径下,运行main.py
运行结果:
照片拍摄日期是:
2021-10-22
获取到经度、纬度是:115.46513298108795,38.83474699749353
他当前位置在:河北省保定市莲池区南大园乡朝阳南大街2166号长城家园南区
运行截图展示:
以上就是利用python提取图片经纬度并锁定拍照地点的详细内容,更多关于python提取图片经纬度的资料请关注其它相关文章!
上一篇: Python Pandas学习之数据离散化与合并详解
下一篇: python实现人脸检测的简单实例