UN LOCODE坐标转标准经纬度:Python方案及转换公式咨询
转换UN LOCODE坐标至标准经纬度
转换逻辑与公式
UN LOCODE的坐标格式遵循固定规则,手动转换公式如下:
- 纬度转换:
- 拆分纬度字符串(如
4230N)为数字段(4230)和方向标识(N/S) - 数字段前2位是度数,后2位是分数
- 标准纬度 = 度数 + (分数 ÷ 60);若方向为
S,结果取负数
- 拆分纬度字符串(如
- 经度转换:
- 拆分经度字符串(如
00131E)为数字段(00131)和方向标识(E/W) - 数字段前3位是度数,后2位是分数
- 标准经度 = 度数 + (分数 ÷ 60);若方向为
W,结果取负数
- 拆分经度字符串(如
Python实现示例
目前没有专门针对UN LOCODE坐标转换的工具包,不过可以轻松实现自定义函数完成转换:
def locode_to_latlon(locode_coord): # 拆分纬度和经度部分 lat_str, lon_str = locode_coord.split() # 处理纬度 lat_deg = int(lat_str[:2]) lat_min = int(lat_str[2:4]) lat_dir = lat_str[-1] latitude = lat_deg + lat_min / 60 if lat_dir == 'S': latitude *= -1 # 处理经度 lon_deg = int(lon_str[:3]) lon_min = int(lon_str[3:5]) lon_dir = lon_str[-1] longitude = lon_deg + lon_min / 60 if lon_dir == 'W': longitude *= -1 # 保留6位小数,符合标准经纬度精度 return round(latitude, 6), round(longitude, 6) # 测试示例输入 sample_coord = "4230N 00131E" lat, lon = locode_to_latlon(sample_coord) print(f"转换结果: 纬度 {lat}, 经度 {lon}") # 输出: 转换结果: 纬度 42.5, 经度 1.516667
这个函数可以直接处理UN LOCODE格式的坐标字符串,输出符合标准的十进制经纬度。
内容的提问来源于stack exchange,提问作者RoieL
相关产品推荐
相关产品推荐

