Python을 사용하여 ArcMap에서 레이어 삭제


9

문제:

  • 모든 레이어를 반복하여이라는 레이어를 찾고 "CADAnnotation"있습니다.
  • 레이어가 존재하면 mxd에서 레이어를 제거하십시오

노트:

  • 독립형 스크립트에서 실행 (즉, Arcmap 내에 없음)
  • "CADAnnotation" 데이터 유형은 CAD 주석 피쳐 클래스입니다
  • "CADAnnotation" 지오 데이터베이스에없는 경우 AutoCAD .dwg에서 작성됩니다.
  • "CADAnnotation" 라는 그룹 레이어 내에 있습니다. "ACAD"
  • 그룹 레이어 "ACAD"를 삭제할 수 있다면 제거해도 "CADAnnotation"좋습니다.

지금까지의 코드 :

for item in mxds:
    print (item)
    mxd = arcpy.mapping.MapDocument(item)
    df=arcpy.mapping.ListDataFrames(mxd,"Project Area")[0]
    for lyr in arcpy.mapping.ListLayers(mxd, "*",df):
        if lyr.name == "CADAnnotation":
            print(lyr.dataSource)
            arcpy.Delete_management("CADAnnotation")
            print("Layer Deleted")
        else:
            pass

코드에 대한 참고 사항 :

  • 레이어에 문제가 없음을 찾을 수 있습니다
  • 라인 arcpy.Delete_management("CADAnnotation")이 작동하지 않으면 오류가 발생합니다.

질문:

  • 레이어를 제거 "CADAnnotation"하거나 "ACAD"그룹화 하는 방법은 무엇입니까?

답변:


17

실제로 지오 데이터베이스에서 레이어를 삭제 하시겠습니까, 아니면 mxd에서 레이어를 제거 하시겠습니까?

당신이 당신 MXD에서 층을 제거하려면, 대신 arcpy.Delete_management("CADAnnotation")arcpy.mapping.RemoveLayer(df, lyr)

데이터 소스를 삭제하려는 경우이 작업을 수행 할 수 있습니다.

for item in mxds:
   print (item)
   mxd = arcpy.mapping.MapDocument(item)
   df=arcpy.mapping.ListDataFrames(mxd,"Project Area")[0]
   for lyr in arcpy.mapping.ListLayers(mxd, "*",df):
      if lyr.name == "CADAnnotation":
         arcpy.mapping.RemoveLayer(df, lyr)
         print(lyr.dataSource)
         arcpy.Delete_management(lyr.dataSource)
         print("Layer Deleted")
      else:
         pass
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.