首页 > 解决方案 > 如何使用 shapely 提取包含在 3 级中的多个多边形?

问题描述

我有一组包含在 CSV 文件中的 xy 坐标列表(3 级列表)列表中的多面体,并且希望使用 shapely 获得这些多面体。

当多边形包含在列表(2 级列表)的列表中时,我能够很好地提取多边形,但当它是 3 级列表(多多边形)时则不能。我怎样才能做到这一点?

我认为它与从文件中读取数据无关。这是代码的摘录:

rapid = pd.read_json('RAPID/RAPID_edit.txt', orient='records')
rapid.geometry = pd.json_normalize(rapid.geometry)
rapid_geo = rapid

rapid_geo['polycount'] = rapid_geo.geometry.astype(str).str.count("\[\[")
rapid_geo_sp = rapid_geo[rapid_geo.polycount.isin([1])]
rapid_geo_mp = rapid_geo[~rapid_geo.polycount.isin([1])]

rapid_geo_sp.geometry = rapid_geo_sp.geometry.astype(str).str.replace("[[[", '[[', regex=False)
rapid_geo_sp.geometry = rapid_geo_sp.geometry.astype(str).str.replace("]]]", ']]', regex=False)
rapid_geo_sp.geometry = rapid_geo_sp.geometry.apply(lambda x: Polygon(eval(x)))

rapid_geo_mp.geometry = [[[tuple(lst_3) for lst_3 in lst_2] for lst_2 in lst_1] for lst_1 in rapid_geo_mp.geometry]
rapid_geo_mp.geometry = np.array(rapid_geo_mp.geometry)
rapid_geo_mp.geometry = unary_union([shape(poly['geometry']) for poly in rapid_geo_mp.geometry])

标签: pythonshapely

解决方案


推荐阅读