代码之家  ›  专栏  ›  技术社区  ›  Rolando

如何避免错误“ValueError:LineString必须至少有2个坐标元组”?

  •  0
  • Rolando  · 技术社区  · 6 年前

    我有一个包含3列的数据框:

    "PathID","Area","Latitude","Longitude"
    

    我首先尝试用

    mygeom = [Point(xy) for xy in zip(mydataframe.Longtitude,mydataframe.Latitude)]
    mygeoframe = GeoDataFrame(mydataframe, geom=mygeom)
    mylines = mygeoframe.groupby(['PathID','Area'])['geometry'].apply(lambda x: LineString(x.tolist()))
    

    我的问题是,我的一些PathID只包含一个点,因此可能不构成一个字符串。。

    ValueError: LineStrings must have at least 2 coordinate tuples
    

    有没有办法过滤掉lambda或其他地方没有2个坐标元组的元组?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Andrew Grass    6 年前

    您可以过滤那些导致错误的值,也可以使用try/catch块处理错误。我觉得后者会是一个更好、更简单的想法。

    try:
        # line(s) that may throw an error
    except ValueError:
        # either do something or continue
    

    同样,您也可以清理输入,并清除故障值。我只是觉得这样更干净,更有效率。