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

使用distGeo函数时出现经度相关错误,寻求问题原因

distGeo函数报错"longitude < -360"的排查方向

以下是几个可能的原因和解决思路:

  • 变量顺序或对应关系错误:distGeo要求输入的坐标是**[经度, 纬度]**的顺序,检查代码里的c(long,lat)和c(longitude,latitude)是不是严格对应了经纬度列,有没有把纬度和经度搞反的情况?如果误传了纬度当经度,哪怕数值范围正常,也可能触发函数的范围校验逻辑异常。

  • 存在未被发现的异常值:你提供的截图只展示了部分数据,可能有个别行的经度值确实小于-360(比如输入错误的-400这类数值),只是没出现在截图里。可以用以下代码排查:

    # 检查经度列的极值
    summary(zone$longitude)
    # 筛选出经度异常的行
    filter(zone, longitude < -360)
    
  • 列类型错误:确认long、lat、longitude、latitude这四列的类型都是数值型(numeric)。如果是字符型,转换为数值时可能出现异常值,触发报错。用str(zone)可以查看各列的类型。

  • rowwise()的不必要使用:distGeo本身支持批量处理矩阵/数据框输入,不需要逐行用rowwise()处理。试试简化代码:

    zone <- zone %>% 
      mutate(distance = distGeo(cbind(long, lat), cbind(longitude, latitude))/1000)
    

    这种方式更高效,也能避免逐行处理时的变量引用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:57:06