我使用python已经有一段时间了,但仍然遇到一些基本问题。 我目前正在使用python中的exifread库来获取经度和纬度。我需要把DMS值转换成DD
到目前为止,我写了以下内容:
#!/bin/python
import math
import exifread
path_name = './IMAG0658.jpg'
f = open(path_name, 'rb')
tags = exifread.process_file(f)
GPSLat = tags['GPS GPSLatitude']
print tags['GPS GPSLatitudeRef']
print GPSLat.values[0]
print GPSLat.values[1]
print GPSLat.values[2]
GPSDDLat = GPSLat.values[0] + ((GPSLat.values[1] / 60) + (GPSLat.values[2]/3600))
print GPSDDLat
但是,打印以下内容后会崩溃:
^{pr2}$如何根据列表值而不是对象本身来计算?在
您的代码不完整,因为您没有提供输入文件
IMAG0658.jpg
。但有些事情还是可以说的,我们仍然可以回答你的问题。在从您的print语句来看,看起来像}都是}实际上是一个对象实例。所以这些值中至少有一个像数值一样打印,但实际上是一个对象实例。在
GPSLat.values[0]
和{int
值。但是我们看到GPSLat.values[2]
看起来像一个分数,因此不是int
值。从您的错误回溯中我们可以看到GPSLat.values[1]
或{问题的解决方案是获取那些在
print
函数中显示的、因此str
函数也可以访问的显式数值,并在进一步计算之前将其转换为数值。由于GPSLat.values[2]
不像int那样打印,而是像分数一样打印,因此我们可以使用fractions
模块中的Fraction
类型来轻松地转换为float
。因此,对于每个值,我们使用str
来获得看起来像数字的值,然后将其转换为实际的float
值。在所以我们可以
但是如果没有这个文件,我就无法对代码进行真正的检查。在
GPSLat.values[x]
是一个对象(一个实例,正如它在回溯中所说的)。在为了获得学位,你需要:
然后将公式改为:
^{pr2}$相关问题 更多 >
编程相关推荐