2011-03-24 3 views
0

지도에서 두 세트의 레이블을 변경하는 방법을 찾으려고합니다. 우편 번호가 표시된지도가 있고 두 개의지도를 출력 할 수 있습니다. 하나는 우편 번호 레이블 (ZIP)이 있고 다른 하나는 데이터에 연결된 입력란 (chrlabel)의 값이있는 것입니다. 목표는 각 우편 번호에 대한 데이터를 표시하는 하나의지도와 우편 번호를 참조로 제공하는 두 번째지도를 갖는 것입니다.ArcMap 데이터 기반 페이지 동적 기능 레이블

작업을 할 수없는 초기 시도는 다음과 같습니다.
내 맵에 두 번째 데이터 프레임을 추가하고 이름이 "zip"및 "chrlabel"인 두 개의 다각형이 포함 된 새 레이어를 추가합니다.
2)이 프레임을 사용하여 데이터 기반 페이지를 활성화 한 다음 기본 프레임 뒤에 숨 깁니다 (그 폴리곤을보고 싶지 않습니다. 데이터 중심 페이지를 제어하기 위해이 프레임을 사용하고 싶습니다).
테스트 = "
만약 테스트 ="다음 우편 "
라벨 =
다른 ZIP
라벨 = CHRLABEL
: 우편 번호 라벨에서
3) 나는이 의사 코드 같은 VBScript를 식을 작성하려 ENDIF

동적 텍스트가 VBScript를에서 페이지 이름을 확인하지 않기 때문에이 작동하지 않습니다.
내가이 일을 할 수 있도록 VBScript로 페이지 이름을 호출 할 수있는 방법이 있습니까?

,

그렇지 않은 경우 다른 방법이 있습니까?
다른 생각은 하나 또는 0으로 채워지는 레이어에 다른 필드를 추가하는 것입니다. 그런 다음 if-then 테스트 조건을 NewField = 1로 바꿀 수 있습니다.

그러면 데이터 구동 페이지가 두 번째 페이지로 넘어갈 때 zipcode 기능의 모든 NewFields를 업데이트하는 스크립트 만 작성하면됩니다. 데이터 기반 페이지가 변경되면 스크립트 (파이썬 또는 기타)를 트리거하는 방법이 있습니까?

감사

답변

1

8개월 너무 늦게,하지만 당신은 자신에 열심히 일을하고

... 후손을 위해 - 그 다음, 중복 레이어를 설정하고 다른 레이어를 사용하는 것이 훨씬 쉬울 것 레이어 가시성 조정. 나는 이런 종류의 VBScript에 익숙하지 않지만 Python (ESRI의 라이브러리 사용)에서는 [Python 2.6, ArcMap 10 - 샘플 만이 디버깅하지는 않지만 비슷한 작업을 수행합니다] :

from arcpy import mapping 

## Load the map from disk 
mxdFilePath = "C:\\GIS_Maps_Folder\\MyMap.mxd" 
mapDoc = mapping.MapDocument(mxdFilePath) 

## Load map elements 
dataFrame = mapping.ListDataFrames(mapDoc)[0] #assumes you want the first dataframe; you can also search by name 
mxdLayers = mapping.ListLayers(dataFrame) 

## Adjust layers 
for layer in mxdLayers: 
    if (layer.name == 'zip'): 
     zip_lyr = layer 
    elif(layer.name == 'sample_units'): 
     labels_lyr = layer 

## Print zip code map 
zip_lyr.visible = True 
zip_lyr.showLabels = True 
labels_lyr.visible = False 
labels_lyr.showLabels = False 

zip_path = "C:\\Output_Folder\\Zips.pdf" 
mapping.ExportToPDF(mapDoc, zip_path, layers_attributes="NONE", resolution=150) 

## Print labels map 
zip_lyr.visible = False 
zip_lyr.showLabels = False 
labels_lyr.visible = True 
labels_lyr.showLabels = True 

labels_path = "C:\\Output_Folder\\Labels.pdf" 
mapping.ExportToPDF(mapDoc, labels_path, layers_attributes="NONE", resolution=150) 

## Combine files (if desired) 
pdfDoc = mapping.PDFDocumentCreate("C:\\Output_Folder\\Output.pdf"") 
pdfDoc.appendPages(zip_path) 
pdfDoc.appendPages(labels_path) 
pdfDoc.saveAndClose() 

는 지금까지 데이터 기반 페이지가 가서, 당신은 당신이 사용하는 경우에 필요 했어 이유를 잘 모르겠어요하지만, 한 번에 또는 루프에서 모두 내 보낸 당신이 원하는대로 조정할 수 있습니다 위와 비슷한 것. ESRI documentation and examples 실제로이 꽤 좋습니다. (당신은 다른 모든 파이썬 문서를 그 페이지에서 꽤 쉽게 얻을 수 있어야합니다.)

+0

감사합니다. 더 이상 문제가되지 않지만 arcmap을 제어하기 위해 파이썬을 사용하는 것으로 옮겨갔습니다. 가장 좋은 방법이었습니다. – orh

+0

내 사용자 프로필을 건너 뛰고이 질문에 주목했습니다. 갑자기 OQ가 내가 생각했던 것과 약간 다른 것을 요구하고 있다는 것을 깨달았다. 가장 좋은 방법은 레이어 레이블을 조정하는 것입니다. "layer.labelClasses [0] .expression = '[attr_field]'"(참고 : 하나 이상의 클래스 레이블을 가질 수 있음) – brichins