2016-08-25 17 views
5

ポリゴンエンティティが実際にマルチポリゴンであるかどうかを確認するにはどうすればよいですか? 私が試した:その後、python shapely:ポリゴンがマルチポリゴンであるかどうかを確認します

if len(polygon)>1: 

が、エラーが出ます:

TypeError: object of type 'Polygon' has no len() 

私はNillNoneなどを試した、何も働きました。

+0

あなたは、マニュアルを確認してください。ここで 'class MultiPolygon'について読むことができます:http://toblerity.org/shapely/manual.html#collections-of-polygons –

+0

これは変数が複数ポリゴンの場合にのみ機能します。そうでない場合は、そのエラーが表示されます。このため、変数がポリゴンかマルチポリゴンかをチェックしたいのです。 – Yair

答えて

4

[OK]を、これは私の仕事:

print ('type = ', type(poly)) 

出力を持つ:

type = <class 'shapely.geometry.polygon.Polygon'> 
ポリゴンの場合

、および:

type = <class 'shapely.geometry.multipolygon.MultiPolygon'> 

マルチポリゴンの場合には

変数が多角形または私はこれやったmultypolygonであるかどうかを確認するには:(general attributes and methodsを参照)

if (isinstance(poly, shapely.geometry.multipolygon.MultiPolygon)): 
    code... 
+0

これは、多ポリゴンにいくつのリングがあるかは分かりません。マルチポリゴンは1つの外部リングのみを持つことができます。あなたのユースケースでは問題ではないかもしれません。 – jpmc26

3

object.geom_type文字列を使用します。例えば

if poly.geom_type == 'MultiPolygon': 
    # do multipolygon things. 
elif poly.geom_type == 'Polygon': 
    # do polygon things. 
else: 
    # raise IOError('Shape is not a polygon.') 
関連する問題