手机

微信

1.微信聊天中的定位经纬度:

有时候会看到这种定位,当时做美亚的时候就没出来。实际上可以在位置部分找到:

其他

1.windows详细信息中位置信息转换

转换代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# -*- coding: utf-8 -*-
"""
把 “度;分;秒” 坐标转换为十进制度,并自动添加 N/E/S/W 标记。
"""

def dms_to_dd(s: str) -> float:
""" "度;分;秒" → 十进制度 """
# 统一分隔符,去掉空格,再拆分
parts = [p for p in s.replace(';', ';').replace(',', ';').split(';') if p.strip()]
deg, minute, sec = map(float, parts) # 直接转 float
return deg + minute / 60.0 + sec / 3600.0 # 十进制度公式


def dd_with_dir(value: float, is_lat: bool) -> str:
"""
把十进制度数值转换为 “数值° 方向” 的字符串。

参数
----
value : 十进制度(正数或负数)
is_lat : True → 处理纬度,False → 处理经度

返回
----
如 "40.0112° N"、"-112.7001° W" → "112.7001° W"
"""
# 方向决定
if is_lat: # 纬度
direction = 'N' if value >= 0 else 'S'
else: # 经度
direction = 'E' if value >= 0 else 'W'

# 取绝对值后拼接
return f"{abs(value):.12f}° {direction}"


# ------------------- 示例 -------------------
if __name__ == '__main__':
# 你的原始数据(可以自行改成其它字符串)
lat_raw = "40;0;40.3800000000046566"
lon_raw = "112; 42; 0.289999999978931555"

# 转换
lat_dd = dms_to_dd(lat_raw)
lon_dd = dms_to_dd(lon_raw)

# 自动加方向标记
lat_str = dd_with_dir(lat_dd, is_lat=True)
lon_str = dd_with_dir(lon_dd, is_lat=False)

print(f"Latitude : {lat_str}")
print(f"Longitude : {lon_str}")