如何将 HEIC 地理位置转换为 google lng lat 格式

问题描述 投票:0回答:1

我保存了我的 iPhone 拍摄的 HEIC 照片。我打开它并尝试找出纬度和经度数字。它显示的内容与google显示的格式完全不同,并且无法搜索到。 如何转换这些数字以符合 Google 地图?

数字如下: 纬度:39;53;0.6499999 经度:116;9;24.4199999

google-maps google-geolocation heic
1个回答
1
投票

您可以使用“re”(常规探索)库将字符串转换为“度、分、秒”

然后将这些值转换为十进制格式。

import re

def extract_lat_long(coord_string):
    pattern = r'Latitude: (\d+;\d+;\d+\.\d+) Longitude: (\d+;\d+;\d+\.\d+)'
    match = re.search(pattern, coord_string)
    if match:
        latitude_input_string = match.group(1)
        longitude_input_string = match.group(2)
        return latitude_input_string, longitude_input_string
    else:
        return None
    
def parse_dms(coord_string):
    pattern = r'(\d+);(\d+);([\d.]+)'
    match = re.match(pattern, coord_string)
    if match:
        degrees = int(match.group(1))
        minutes = int(match.group(2))
        seconds = float(match.group(3))
        return degrees, minutes, seconds
    else:
        return None
    
def dms_to_decimal(degrees, minutes, seconds):
    return degrees + minutes / 60 + seconds / 3600

# Your specific example:
coord_string = 'Latitude: 39;53;0.6499999 Longitude: 116;9;24.4199999'

latitude_input_string, longitude_input_string = extract_lat_long(coord_string)

latitude_degrees, latitude_minutes, latitude_seconds = parse_dms(latitude_input_string)
longitude_degrees, longitude_minutes, longitude_seconds = parse_dms(longitude_input_string)

print(f"Latitude: {latitude_degrees, latitude_minutes, latitude_seconds} Longitude: {longitude_degrees, longitude_minutes, longitude_seconds}")

latitude_decimal = dms_to_decimal(latitude_degrees, latitude_minutes, latitude_seconds)
longitude_decimal = dms_to_decimal(longitude_degrees, longitude_minutes, longitude_seconds)

print(f"Latitude: {latitude_decimal} Longitude: {longitude_decimal}")

结果

$ python convert.py

Latitude: (39, 53, 0.6499999) Longitude: (116, 9, 24.4199999)
Latitude: 39.88351388886111 Longitude: 116.15678333330555

© www.soinside.com 2019 - 2024. All rights reserved.