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

MutableList转自定义Point对象列表出错,坐标出现无穷值求排查

问题排查与修复方案
  • 核心问题:转换逻辑完全错误
    你当前的转换代码根本没有读取coordinateArray中存储的经纬度数据,而是用循环索引i和i+1生成了无意义的坐标值。这种不符合地理坐标规范的输入,会导致AreaBuffer.buffer函数在计算时出现数值异常(比如溢出),最终产生无穷值。

  • 正确的转换逻辑
    假设coordinateArray中每个子列表的结构是[经度, 纬度](即每个MutableList<Double>包含两个Double值),正确的转换代码应该是:

    val pointList: MutableList<Point> = ArrayList()
    for (coords in coordinateArray) {
        // 确保子列表包含至少两个元素,避免索引越界
        if (coords.size >= 2) {
            val point = Point(coords[0], coords[1])
            pointList.add(point)
        }
    }
    
    val distance = 0.0001
    val bufferedPolygonList: List<Point> = AreaBuffer.buffer(pointList, distance)
    

    或者用更简洁的Kotlin风格写法:

    val pointList = coordinateArray
        .filter { it.size >= 2 }
        .map { Point(it[0], it[1]) }
        .toMutableList()
    
    val distance = 0.0001
    val bufferedPolygonList = AreaBuffer.buffer(pointList, distance)
    
  • 额外检查点

    • 确认coordinateArray本身是否有有效数据:如果原列表是空的,或者子列表的数值本身是非法值(比如无穷大、NaN),也会导致后续计算异常。
    • 检查AreaBuffer.buffer函数的输入要求:比如是否要求点列表构成闭合多边形(首尾点相同),如果输入的是开放线段,可能也会引发计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:25:25