Страницы на основе данных ArcMap Динамические метки объектов - PullRequest
0 голосов
/ 25 марта 2011

Я пытаюсь найти способ переключения между двумя наборами меток на карте. У меня есть карта с почтовыми индексами, которые помечены, и я хочу иметь возможность выводить две карты: одну с меткой почтового индекса (ZIP) и одну со значением из поля, которое я присоединила к данным (называемого chrlabel). Цель состоит в том, чтобы иметь одну карту, показывающую данные для каждого почтового индекса, и вторую карту, на которой указан почтовый индекс в качестве ссылки.

Моя первая попытка, которую я не могу получить, выглядит так:
1) Я добавил второй фрейм данных на свою карту и добавил новый слой, который содержит два полигона с именами "zip" и "chrlabel".
2) Я использую этот фрейм для включения управляемых данными страниц, а затем скрываю его за основным фреймом (я не хочу видеть эти полигоны, я просто хочу использовать их для управления страницами, управляемыми данными). 3) В метках почтового индекса я пытался написать выражение VBScript, как этот псевдокод:
test = "
Если test = "zip", то
ярлык = ZIP
еще
label = CHRLABEL
endif

Это не работает, поскольку динамический текст не преобразуется в имя страницы в VBScript.
Есть ли способ назвать имя страницы в VBScript, чтобы я мог сделать эту работу?

Если нет, есть ли другой способ сделать это?
Моя другая мысль состоит в том, чтобы добавить другое поле к слою, который заполняется единицей или нулем. Тогда я мог бы заменить условие теста if-then на if NewField = 1.

Тогда мне просто нужно написать скрипт, который обновляет все NewFields для функций почтового индекса, когда управляемая данными страница переходит на вторую страницу. Есть ли способ вызвать скрипт (python или другой) при изменении страницы, управляемой данными?

Спасибо

1 Ответ

1 голос
/ 14 декабря 2011

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 и примеры действительно хороши в этом. (Вы можете легко получить доступ ко всей другой документации по Python с этой страницы.)

...