用Python exifread 库获取和实现图片的定位
首先,安装这个库
pip install exifread
安装成功!!!
确定经纬度功能函数
查找GPS图片
def find_GPS_images(pic_path):
GPS ={}
data =''
with open(pic_path,'rb') as f:
tags =exifread.process_file(f)
info = {
# 注意 这里获得到的是值 需要使用 values方法
'Image DateTime(拍摄时间)': tags.get('Image DateTime', '0').values,
'GPS GPSLatitudeRef(纬度标志)': tags.get('GPS GPSLatitudeRef', '0').values,
'GPS GPSLatitude(纬度)': tags.get('GPS GPSLatitude', '0').values,
'GPS GPSLongitudeRef(经度标志)': tags.get('GPS GPSLongitudeRef', '0').values,
'GPS GPSLongitude(经度)': tags.get('GPS GPSLongitude', '0').values
}
return info
建立GPS字典,用process_file()方法得到key 和value值,注意我们要取的是valu值。
经纬度度分秒转化成度函数
def process_num(x):
'''
处理经纬度 将其转化为 xx.xxxxxx格式
注意列表中的每一个元素 是 <class 'exifread.utils.Ratio'>
由于最后一个是 10243/2000 这样的格式 需要手动将其处理 其余的使用 .num 方法就能获得到值
:param x: 传入的经度和纬度
:return: 处理好了经纬度
'''
# 处理列表中最后一个元素
x_last = eval(str(x[-1]))
# 转化
new_x = x[0].num + x[1].num / 60 + x_last / 3600
return '{:.13f}'.format(new_x)
main 函数
if __name__ == '__main__':
info_dict = find_GPS_images('GPS2.jpg')
lat=info_dict.get('GPS GPSLatitude(纬度)')#纬度
lng=info_dict.get( 'GPS GPSLongitude(经度)')#经度
#小数形式的坐标
lat_num = process_num(lat)
lng_num = process_num(lng)
print(lat_num,lng_num)#纬度,经度
运行结果
成功获取经纬度,接下来可以去地图上寻找或者使用爬虫继续在地图上爬取信息,下期分享!