I have few polygons or boxes. Ones intersect each other but some are isolated. For example I have free figures:
import shapely.geometry as sg
import shapely.ops as so
import matplotlib.pyplot as plt
r1 = sg.Polygon([(0,0),(0,1),(1,1),(1,0),(0,0)])
r2 = sg.box(0.5,0.5,1.5,1.5)
r3 = sg.box(4,4,5,5)
First two are intersected and r3 is on some distance from them. I unite them via cascaded_union:
new_shape = so.cascaded_union([r1, r2, r3])
Then I try to plot it (one united figure of r1 and r2 and one distanced box r3)
xs, ys = new_shape.exterior.xy
fig, axs = plt.subplots()
axs.fill(xs, ys, alpha=0.5, fc='r', ec='none')
plt.show()
Instead of plot I receive an AttributeError: 'MultiPolygon' object has no attribute 'exterior'.
Is there a pythonic way to display a multipolygon or to iterate through it and draw its parts?


cascaded_unionis deprecated. See here. – petezurich Nov 27 '22 at 12:56