Para obtener las coordenadas exteriores, necesito convertir un MultiPolygon bien formado en un Polígono. Lo hago así:
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
Esto tiene éxito con mucha frecuencia, pero también hay casos en los que el Polígono obviamente sigue siendo un MultiPolygon ya que aún se genera el siguiente error:
AttributeError: 'MultiPolygon' object has no attribute 'exterior'
Sin embargo, he comprobado que cada parte del MultiPolygon es un polígono y no un MultiPolygon:
>>>>[p.type for p in poly.geometry]
['Polygon', 'Polygon']
¿Alguna idea de por qué sucede esto y cómo solucionarlo?
geometry
en a Polygon
, pero geom_type
?