Python实现获取照片的地理定位信息_第1页
Python实现获取照片的地理定位信息_第2页
Python实现获取照片的地理定位信息_第3页
Python实现获取照片的地理定位信息_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Python实现获取照片的地理定位信息lon=exif_data['GPSInfo']['GPSLongitude']

lon_ref=exif_data['GPSInfo']['GPSLongitudeRef']

#lon_degrees=lon[0][0]/float(lon[0][1])

lon_degrees=lon[0].numerator/float(lon[0].denominator)

#lon_minutes=lon[1][0]/float(lon[1][1])

lon_minutes=lon[1].numerator/float(lon[1].denominator)

#lon_seconds=lon[2][0]/float(lon[2][1])

lon_seconds=lon[2].numerator/float(lon[2].denominator)

lon_direction=lon_ref

gps_info['longitude']=(lon_degrees+(lon_minutes/60.0)+(lon_seconds/3600.0))*(-1iflon_direction=='W'else1)

returngps_info

#测试代码

if__name__=='__main__':

image_path=r'D:\spiderdocs\FtpServer\IMG_20250302_134126.jpg'

#修改为你自己的JPEG图像路径

exif_data=get_exif_data(image_path)

gps_info=get_gps_info(exif_data)

print('经度:',gps_info['longitude'])

print('纬度:',gps_info['latitude'])

三、代码说明

在上述代码中,我们使用了ifhasattr(img,_getexif):来检查图片是否包含EXIF数据。如果包含,就将获取到的EXIF数据保存在exif_data变量中。然后再使用ifexif_dataisNone:来检查exif_data是否为None。如果是,就说明图片没有EXIF数据,打印一条消息并返回一个空字典。否则,将EXIF数据转换为字典格式并返回。

四、报错1

Traceback(mostrecentcalllast):

Filed:\spiderdocs\jpegexifgps.py,line53,inmodule

exif_data=get_exif_data(image_path)

Filed:\spiderdocs\jpegexifgps.py,line12,inget_exif_data

fortag,valueinimg._getexif().items():

AttributeError:NoneTypeobjecthasnoattributeitems

五、解决方法1

出现这种情况的原因可能是文件中没有EXIF数据或者图片格式不支持EXIF数据。为了避免出现这种错误,您可以在调用_getexif()方法之前,先检查一下是否存在_getexif()方法和返回的EXIF数据是否为None。如果是None,则说明该图片没有EXIF数据,需要相应地处理。

1.打开手机的相机应用,进入相机设置。

2.找到地理标记或者位置信息这个选项,打开它。

3.确保允许相机应用访问位置信息。在有些手机上,您需要在设置中打开相机应用的位置权限。

4.如果您希望在每次拍照时都保存经纬度信息,可以选择始终使用或启用选项。如果您只想在需要时保存位置信息,可以选择询问每次选项。

5.拍摄照片时,手机会自动获取当前位置的经纬度信息,并将其保存在照片的EXIF数据中。您可以使用一些工具或软件来读取照片的EXIF数据,并提取经纬度信息。

请注意,启用位置信息会对手机的电池寿命产生一定影响。如果您不需要在拍照时保存经纬度信息,建议关闭位置信息功能,以延长手机的电池寿命。

六、报错2

Traceback(mostrecentcalllast):

Filed:\spiderdocs\jpegexifgps.py,line57,inmodule

gps_info=get_gps_info(exif_data)

Filed:\spiderdocs\jpegexifgps.py,line34,inget_gps_info

lat_degrees=lat[0][0]/float(lat[0][1])

TypeError:IFDRationalobjectisnotsubscriptable

七、解决方法2

这个错误是因为在读取经纬度信息时,使用了IFDRational类型的对象来进行下标操作,而IFDRational类型并不支持下标操作。

建议检查代码中读取经纬度信息的部分,并确保使用正确的数据类型进行操作。您可以尝试使用numerator和denominator属性来获取IFDRational类型对象的值,例如:

类似地,您也可以使用longitude[0].numerator和longitude[0].denominator来获取经度的度数。

lat_degrees=lat[0].numerator/float(lat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论