आपको कुछ स्तर पर पुनरावृति की आवश्यकता है। ( अपडेट : मैंने "लूप्स के लिए सभी" को हटाने के लिए संपादित किया है, एक सूची समझ के अलावा )
# imports used throughout this example
from shapely.geometry import Point
from shapely.ops import cascaded_union
from itertools import combinations
# Here are your input shapes (circles A, B, C)
A = Point(3, 6).buffer(4)
B = Point(6, 2).buffer(4)
C = Point(1, 2).buffer(4)
# list the shapes so they are iterable
shapes = [A, B, C]
पहले आपको सभी चौराहों के संघ की आवश्यकता है (एक का उपयोग करें) प्रत्येक आकार के संयोजन जोड़ी का उपयोग करके कैस्केड संघ का उपयोग करें) । फिर आप difference
सभी आकृतियों के संघ से चौराहों को हटाते हैं (के माध्यम से )।
# All intersections
inter = cascaded_union([pair[0].intersection(pair[1]) for pair in combinations(shapes, 2)])
# Remove from union of all shapes
nonoverlap = cascaded_union(shapes).difference(inter)
यहाँ जो nonoverlap
दिखता है (जेटीएस टेस्ट बिल्डर के माध्यम से):