提取Exif信息中GPS经纬度,转化为double方法

本文介绍了如何从Exif信息中提取GPS经纬度,并将其转化为double类型,适用于与地图API配合使用。通过创建EXIFINFO类并调用EXIF_Read()方法读取JPG图片的Exif信息,然后利用自定义的transToDouble()函数将度分秒形式的经纬度转换为double。尽管transToDouble()无法处理秒的小数部分,但对于大多数民用需求,其精度通常在10米内,足以满足要求。
摘要由CSDN通过智能技术生成

首先大致说下exif信息。感谢百度百科君~

Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。

对于JPG图片处理, 我所用的,都包含在DealExif.cpp中(下载地址在后面给出,也可以在去google),从文件名就能看出,这个文件的内容主要用于处理JPG图片的Exif信息。


完整过程如下:

1.创建EXIFINFO类,接受被读取JPG图片的EXIF信息。然后调用EXIF_Read()方法读取指定路径下JPG图片。

EXIFINFO exifInfo;//创建EXIFINFO类
EXIF_Read(csName, &exifInfo);//读取文件,该方法包含在DealExif中,有两个参数,第一个是JPG文件名。

2.EXIFINFO类中Latitude属性是纬度,Longitude属性是经度。得到的是CString类型,用度分秒表示,如 28 59‘ 17.300000(注意28后面是空格分隔开来)。这显然不方便使用,如果要使用GOOGLE MAP API或者 百度地图 API中的方法,需要的参数经纬度是double型。

3.使用transToDouble方法(是我写的,下面会给出)将exif中读取出来的经度或纬度(CString型 度分秒表示),转化为double型。参数是CString类型的经度或纬度值,返回类型是double型的经度或纬度,如18.52 (度)。


PS:transToDouble()方法不能读到秒的小数点以后,如28 59‘ 17.300000,只能将28 59’ 17 转化出来。,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值