首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python将Exif DMS转换为DD地理位置

使用Python将Exif DMS转换为DD地理位置
EN

Stack Overflow用户
提问于 2011-06-24 04:42:22
回答 2查看 3.2K关注 0票数 5

我使用以下代码来提取使用iPhone拍摄的图像的地理位置:

代码语言:javascript
运行
复制
from PIL import Image
from PIL.ExifTags import TAGS

def get_exif(fn):
    ret = {}
    i = Image.open(fn)
    info = i._getexif()
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    return ret

a = get_exif('photo2.jpg')
print a

这是返回给我的结果:

代码语言:javascript
运行
复制
    {
    'YResolution': (4718592, 65536),
    41986: 0,
    41987: 0,
    41990: 0,
    'Make': 'Apple',
    'Flash': 32,
    'ResolutionUnit': 2,
    'GPSInfo': {
        1: 'N',
        2: ((32, 1), (4571, 100), (0, 1)),
        3: 'W',
        4: ((117, 1), (878, 100), (0, 1)),
        7: ((21, 1), (47, 1), (3712, 100))
    },
    'MeteringMode': 1,
    'XResolution': (4718592, 65536),
    'ExposureProgram': 2,
    'ColorSpace': 1,
    'ExifImageWidth': 1600,
    'DateTimeDigitized': '2011:03:01 13:47:39',
    'ApertureValue': (4281, 1441),
    316: 'Mac OS X 10.6.6',
    'SensingMethod': 2,
    'FNumber': (14, 5),
    'DateTimeOriginal': '2011:03:01 13:47:39',
    'ComponentsConfiguration': '\x01\x02\x03\x00',
    'ExifOffset': 254,
    'ExifImageHeight': 1200,
    'Model': 'iPhone 3G',
    'DateTime': '2011:03:03 10:37:32',
    'Software': 'QuickTime 7.6.6',
    'Orientation': 1,
    'FlashPixVersion': '0100',
    'YCbCrPositioning': 1,
    'ExifVersion': '0220'
}

所以,我想知道如何将GPSInfo值( am )转换为实际坐标的十进制度?此外,似乎列出了两个西部。。。?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-24 15:27:22

以下是一种方法,适用于我几个月前使用pyexiv2编写的脚本:

代码语言:javascript
运行
复制
a = get_exif('photo2.jpg')
lat = [float(x)/float(y) for x, y in a['GPSInfo'][2]]
latref = a['GPSInfo'][1]
lon = [float(x)/float(y) for x, y in a['GPSInfo'][4]]
lonref = a['GPSInfo'][3]

lat = lat[0] + lat[1]/60 + lat[2]/3600
lon = lon[0] + lon[1]/60 + lon[2]/3600
if latref == 'S':
    lat = -lat
if lonref == 'W':
    lon = -lon

这为您的图片提供了以下纬度和经度: 32.7618333,-117.146333 (结果与Lance Lee相同)。

GPSInfo的最后一个条目可能是图片的标题。您可以使用为不同的EXIF值提供适当名称的工具来检查这一点,比如exiv2或exiftools。

票数 8
EN

Stack Overflow用户

发布于 2011-06-24 06:22:51

http://www.exiv2.org/tags.html在该页面中查找字符串'Exif.GPSInfo.GPSLatitude‘。看起来你得到了3对(代表有理数),这对中的第二个数字是分母。我希望经度之后的东西是高度,但它更适合GPS时间戳。

在此示例中:

代码语言:javascript
运行
复制
32/1 + (4571 / 100)/60 + (0 / 1)/3600 = 32.761833 N
117/1 + (878 / 100)/60 + (0 / 1)/3600 = 117.146333 W

这张照片是在加州圣地亚哥公园大道4646号附近拍摄的吗,邮编: 92116?如果没有,请忽略此答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6460381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档