Untuk mendapatkan koordinat eksterior, saya perlu mengubah MultiPolygon menjadi Polygon. Saya melakukannya seperti ini:
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
Ini sangat sering berhasil, tetapi ada juga kasus di mana Polygon jelas tetap MultiPolygon karena kesalahan berikut masih muncul:
AttributeError: 'MultiPolygon' object has no attribute 'exterior'
Saya telah memeriksa, bagaimanapun, bahwa setiap bagian dari MultiPolygon adalah poligon dan bukan MultiPolygon itu sendiri:
>>>>[p.type for p in poly.geometry]
['Polygon', 'Polygon']
Adakah ide mengapa ini terjadi dan bagaimana cara memperbaikinya?
Mungkinkah itu lubang di poligon? Saya terlihat seperti ini:
geometry
dalam Polygon
, tetapi geom_type
?