外部座標を取得するために、形の良いMultiPolygonをPolygonに変換する必要があります。私はそれをこのようにします:
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
これは頻繁に成功しますが、次のエラーが発生するため、Polygonが明らかにMultiPolygonのままである場合もあります。
AttributeError: 'MultiPolygon' object has no attribute 'exterior'
ただし、MultiPolygonのすべての部分がポリゴンであり、それ自体がMultiPolygonではないことを確認しました。
>>>>[p.type for p in poly.geometry]
['Polygon', 'Polygon']
これがなぜ起こるのか、そしてそれを修正する方法はありますか?
MultiPolygonはポリゴンの単純なリストであるため、リストには「外部」はありませんが、リスト内のすべてのポリゴンには「外部」があります。ポリゴンが必要な場合は、forループ([p.exterior.xy for p in Multi)]
—
gene
わかりましたが、MultiPolygonの外部座標を取得するために何ができますか?私のアプローチでは、単一のポリゴンの結合を試みていますが、これはここでは機能しないようです...
—
カントリーマン
その間にAPIの形が変わった可能性はありますか?に属性
—
K.-Michael Aye
geometry
が表示されませんPolygon
が、geom_type
?