python - 将 MultiPolygons 和 Polygons 列表转换为单个 MultiPolygon
问题描述
如何以通用方式从 MultiPolygon 和 Polygon 对象列表中创建 MultiPolygon?
a = MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])])
b = Polygon([(0, 0), (2, 1), (1, 0)])
我希望执行导致以下对象的操作:
MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)]) , Polygon([(0, 0), (2, 1), (1, 0)])])
我不想创建一个联合,我只想迭代所有多边形。
解决方案
Shapely 中没有可以从多边形和MultiPolygon
对象列表中创建多边形列表的功能。但是您可以为此目的编写一个简单的生成器函数:
from shapely.geometry import MultiPolygon, Polygon
a = MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])])
b = Polygon([(0, 0), (2, 1), (1, 0)])
your_list = [a, b]
def to_polygons(geometries):
for geometry in geometries:
if isinstance(geometry, Polygon):
yield geometry
else:
yield from geometry
result = MultiPolygon(to_polygons(your_list))
print(result.wkt)
# MULTIPOLYGON (((0 0, 1 1, 1 0, 0 0)), ((0 0, 2 1, 1 0, 0 0)))
推荐阅读
- flutter - 如何在 Flutter Web 上禁用 SPA
- java - 如何在 Windows 中将简单的基于文本的 Java 程序作为应用程序运行?
- python - 如何从 Spotipy 循环 current_playback() 函数?
- node.js - 只能用node-sass解决绝对路径吗?
- javascript - 自动播放功能以任何方式绕过浏览器默认设置
- django - 在 Django Rest Framework 中测试对经过身份验证的路由的 POST 请求
- d3.js - d3 GeoJSON 投影仅显示点而不显示背景图
- delphi-2010 - E2251 对“StrLen”SysUtils.pas(7863) 的模糊重载调用:
- kendo-ui - 如何在剑道反应上传中导入和导出xlsx
- python - 使用 python 语音转文本。不打印任何东西也没有错误