2016-08-25 8 views
5

다각형 엔티티가 실제로 다중 다각형인지 점검 할 수 있습니까?python shapely : 다각형이 다중 다각형인지 확인하십시오.

if len(polygon)>1: 

을하지만 오류 얻을 : 내가 해봤 내가 Nill, None 등을 시도했습니다

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

을, 아무 일 없습니다.

+0

당신은 설명서를 확인해야합니다. 여기에서'class MultiPolygon'에 대한 내용을 볼 수 있습니다 : http://toblerity.org/shapely/manual.html#collections-of-polygons –

+0

변수가 다중 다각형 인 경우에만 작동합니다. 그렇지 않은 경우 - 오류가 발생합니다. 그렇기 때문에 변수가 다각형인지 다중 다각형인지 확인해야합니다. – Yair

답변

4

좋아,이 날 근무 :

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

출력을 :

type = <class 'shapely.geometry.polygon.Polygon'> 
다각형의 경우

하고 :

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

다중 다각형의 경우이다.

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

다중 다각형이 갖고있는 링의 수를 알려주지는 않을 것입니다. 다중 다각형은 외부 링을 하나만 가질 수 있습니다. 그것은 당신의 유스 케이스에 대해 중요하지 않을 수 있습니다. – jpmc26

3

이 (general attributes and methods 참조) object.geom_type 문자열을 사용하여 변수가 다각형 또는 내가 이것을했던 multypolygon 경우

확인합니다. 예를 들어

:

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