寻找python模块,可以完整读取.jpg图片GPS信息

各位网友寻找一个python模块能够完整读取.JPG图片GPS信息,由于GPS精度太高(如图),exifread并不能完整读取。并且exifread模块读出来的是分数。
img

python exifread读出来的经纬度是度,需要转成decimal小数格式就可以了啊,并没有丢精度

运行图如下:

img

# 读取照片的GPS经纬度信息


# 经纬度坐标格式转换(* °转十进制格式)
# 将经纬度转换为小数形式
def convert_to_decimal(*gps):
    # 度
    if '/' in gps[0]:
        deg = gps[0].split('/')
        if deg[0] == '0' or deg[1] == '0':
            gps_d = 0
        else:
            gps_d = float(deg[0]) / float(deg[1])
    else:
        gps_d = float(gps[0])
    # 分
    if '/' in gps[1]:
        minu = gps[1].split('/')
        if minu[0] == '0' or minu[1] == '0':
            gps_m = 0
        else:
            gps_m = (float(minu[0]) / float(minu[1])) / 60
    else:
        gps_m = float(gps[1]) / 60
    # 秒
    if '/' in gps[2]:
        sec = gps[2].split('/')
        if sec[0] == '0' or sec[1] == '0':
            gps_s = 0
        else:
            gps_s = (float(sec[0]) / float(sec[1])) / 3600
    else:
        gps_s = float(gps[2]) / 3600

    decimal_gps = gps_d + gps_m + gps_s
    # 如果是南半球或是西半球
    if gps[3] == 'W' or gps[3] == 'S' or gps[3] == "83" or gps[3] == "87":
        return str(decimal_gps * -1)
    else:
        return str(decimal_gps)


def test_lat_lon_2_decimal(lat, lng):
    print('lat: ', str(lat))
    deg, minu, sec = [x.replace(' ', '') for x in str(lat)[1:-1].split(',')]
    # 将经度转换为小数形式
    print('GPSLatitude', convert_to_decimal(deg, minu, sec, 'N'))  # 对特殊的经纬度格式进行处理)

    print('lng: ', str(lng))
    deg, minu, sec = [x.replace(' ', '') for x in str(lng)[1:-1].split(',')]
    # 将纬度转换为小数形式
    print('GPSLongitude', convert_to_decimal(deg, minu, sec, 'N'))  # 对特殊的经纬度格式进行处理)


if __name__ == '__main__':
    # 测试经纬度的度转小数格式
    test_lat_lon_2_decimal('[40, 1, 2067993/200000]', '[116, 22, 25038757/500000]')