Để có được tọa độ bên ngoài, tôi cần chuyển đổi MultiPolygon thành Đa giác. Tôi làm như thế này:
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
Điều này thành công rất thường xuyên, nhưng cũng có trường hợp Polygon rõ ràng vẫn là MultiPolygon vì lỗi sau vẫn được nêu ra:
AttributeError: 'MultiPolygon' object has no attribute 'exterior'
Tuy nhiên, tôi đã kiểm tra rằng mọi phần của MultiPolygon là một đa giác và bản thân nó không phải là Đa giác:
>>>>[p.type for p in poly.geometry]
['Polygon', 'Polygon']
Bất kỳ ý tưởng tại sao điều này xảy ra và làm thế nào để khắc phục nó?
geometry
trong một Polygon
, nhưng geom_type
?