You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用zip处理数组中的GPS坐标数据

批量处理GPS坐标字符串数组实现zip拆分

我有一段处理GPS坐标的Python代码,通过zip将一组坐标拆分为纬度和经度集合:

golden_gate_park = zip(*[
    (55.87694550, 37.48297183),
    (55.87870300, 37.48198183),
    (55.87875750, 37.48202100),
    (55.87880417, 37.48206183),
    (55.87883250, 37.48209700),
    (55.87979000, 37.48279567),
    (55.87993383, 37.48277550),
    (55.88843017, 37.48345133),
    (55.89800350, 37.48674450),
    (55.89821033, 37.48673800)
])

现在我有一个存储坐标字符串的数组:

array = ['55.87694550 37.48297183', '55.87870300 37.48198183', '55.87875750 37.48202100', '55.87880417 37.48206183', '55.87883250 37.48209700', '55.87979000 37.48279567', '55.87993383 37.48277550', '55.88843017 37.48345133', '55.89800350 37.48674450', '55.89821033 37.48673800', '55.89841483 37.48671867', '55.89861500 37.48668800', '55.89881033 37.48664517']

目前我只能提取单个元素处理:

mapcoord1 = array[0].split(" ")[0]
mapcoord2 = array[0].split(" ")[1]
attractions_lats, attractions_lngs =  zip(*{
    (float(mapcoord1), float(mapcoord2)),
})

请问如何实现批量处理数组中的所有数据?


解决方案

你可以先将数组内的每个字符串转换为(float, float)格式的坐标元组,再通过zip(*...)拆分纬度和经度集合,以下是两种简洁实现方式:

方式一:列表推导式分步处理

# 将所有坐标字符串转换为浮点型元组
coords = [tuple(map(float, s.split())) for s in array]
# 拆分纬度和经度集合
attractions_lats, attractions_lngs = zip(*coords)

方式二:一步完成(无中间变量)

attractions_lats, attractions_lngs = zip(*(tuple(map(float, s.split())) for s in array))

代码逻辑说明

  • s.split():将单条坐标字符串按空格分割为两个字符串元素
  • map(float, ...):把分割后的字符串转为浮点型数值
  • tuple(...):将数值打包为元组,与你示例中的坐标格式统一
  • zip(*coords):通过解包坐标列表,将所有元组的第一个元素(纬度)、第二个元素(经度)分别聚合,最终得到两个包含所有纬度、经度的元组

处理后attractions_lats会包含所有坐标的纬度值,attractions_lngs包含所有经度值,和你处理golden_gate_park的逻辑完全一致。


内容的提问来源于stack exchange,提问作者RADIO BUTIK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:35:17