2013-04-29 1 views
1

금요일에 Python을 사용하기 시작 했으므로 저는 꽤 기초적인 레벨에 있습니다. 몇 개의 레이어가있는 .mdx를 만들고 싶습니다. 특정 명명 된 인스턴스를 한 번에초심자 - Python 2.7.2, ArcGIS 10.1 다중 '또는'조건, 동일한 동작

그래서 '여러개'또는 '여러개'로 레이어를 선택하고 ToC에서 제거 (디스크에서 삭제하지 않음)하고 싶습니다. 아래 'if'라인 중 어느 것도 작동하지 않습니다.

# Remove source features from TOC 
for lyr in arcpy.mapping.ListLayers(mxd, "", df): 

if (lyr.name == "name1") or (lyr.name() == "name2") or (lyr.name() == "name3" 

if (lyr.name == ("name1" or "name2" or "name3"): 

    arcpy.mapping.RemoveLayer(df, lyr) 

의견을 보내 주셔서 감사합니다.

+0

당신은'무효 syntax'의 오류가 있습니까? 당신은 당신의'if' 둘 모두에 몇몇 오른쪽 괄호를 놓치고 있습니다. 또한 때로는'lyr.name'을하고, 때로는'lyr.name()'을 수행합니다. 어떤거야? – Kevin

+0

lyr.name 또는 lyr.name() - 나는 그렇지 않습니다 - 차이점은 무엇입니까? –

+0

@ Bruce Mitchell : lyr.name은 속성 또는 클래스 변수 중 하나입니다. lyr.name()은 메서드입니다 (잘하면 이름을 반환 함). –

답변

0

나는 알고리즘을 이해하지 않습니다하지만 난 당신이 다음 필요가 있다고 생각 :

for lyr in arcpy.mapping.ListLayers(mxd, "", df): 
    if lyr.name() in ['name1', 'name2', 'name3']: 
     arcpy.mapping.RemoveLayout(df, lyr) 
+1

빠른 응답을위한 탁신. 지금 조사 중입니다. ... 만약 [ 'AllCENTROIDS'에서 lyr.name, 'AllPOLYGONS', 'POLYGONSsenzaCENTROIDS'(DF ""MXD) 을 ... arcpy.mapping.ListLayers에 LYR을 위해 : –

+0

마지막으로 작동하도록 있어요 ] : ... arcpy.mapping.RemoveLayer (df, lyr) 도움 주셔서 감사합니다. –

+0

@ Bruce Mitchell : 이제는 다행합니다. 모든 올바른 답안을 upvote하고 해결책 중 하나를 선택하면 친절 할 것입니다. –