0

我正在尝试找出一种在地图上的两组标签之间进行更改的方法。我有一张带有标记的邮政编码的地图,我希望能够输出两张地图:一张带有邮政编码标签 (ZIP),另一张带有我已加入数据的字段中的值(称为 chrlabel)。目标是有一张地图显示每个邮政编码的数据,第二张地图提供邮政编码作为参考。

我无法工作的最初尝试如下所示:
1) 我在地图中添加了第二个数据框,并添加了一个新图层,其中包含两个名为“zip”和“chrlabel”的多边形。
2)我使用这个框架来启用数据驱动页面,然后我将它隐藏在主框架后面(我不想看到那些多边形,我只想用它们来控制数据驱动页面)。
3) 在邮政编码标签中,我尝试编写一个像这样的伪代码的 VBScript 表达式:
test = "
If test = "zip" then
label = ZIP
else
label = CHRLABEL
endif

这不起作用,因为动态文本无法解析为 VBScript 中的页面名称。
有没有办法在 VBScript 中调用页面名称,以便我可以完成这项工作?

如果没有,还有其他方法可以做到这一点吗?
我的另一个想法是向填充了 1 或 0 的图层添加另一个字段。然后我可以用 if NewField = 1 替换 if-then 测试条件。

然后,我只需要编写一个脚本,当数据驱动页面前进到第二页时,更新邮政编码功能的所有 NewFields。当数据驱动的页面发生变化时,有没有办法触发脚本(python 或其他)?

谢谢

4

1 回答 1

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 文档和示例实际上在这方面做得很好。(您应该能够从该页面轻松访问所有其他 Python 文档。)

于 2011-12-14T00:30:46.613 回答