Afin d'obtenir les coordonnées extérieures, j'ai besoin de convertir un MultiPolygon bien fait en Polygone. Je le fais comme ça:
if poly.geometry.type == 'Polygon':
x, y = poly.geometry.exterior.xy
elif poly.geometry.type == 'MultiPolygon':
allparts = [p.buffer(0) for p in poly.geometry]
poly.geometry = shapely.ops.cascaded_union(allparts)
x, y = poly.geometry.exterior.xy # here happens the error
Cela réussit très souvent, mais il y a aussi des cas où le polygone reste évidemment un MultiPolygon car l'erreur suivante est toujours générée:
AttributeError: 'MultiPolygon' object has no attribute 'exterior'
J'ai vérifié, cependant, que chaque partie du MultiPolygon est un polygone et non lui-même un MultiPolygon:
>>>>[p.type for p in poly.geometry]
['Polygon', 'Polygon']
Des idées pourquoi cela se produit et comment y remédier?
Est-ce que ce peuvent être les trous du polygone? Je ressemble à ceci:
geometry
dans un Polygon
, mais geom_type
?