首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArcMap数据驱动页面动态要素标注

ArcMap数据驱动页面动态要素标注
EN

Stack Overflow用户
提问于 2011-03-25 05:18:08
回答 1查看 3.1K关注 0票数 0

我正在尝试找出一种在地图上的两组标签之间切换的方法。我有一个带有邮政编码标签的地图,我希望能够输出两个地图:一个带有邮政编码标签( zip ),另一个带有我连接到数据中的字段的值(称为chrlabel)。我们的目标是有一个地图显示每个邮政编码的数据,第二个地图提供邮政编码作为参考。

我无法正常工作的初始尝试如下所示:

1)我向我的地图添加了第二个数据框,并添加了一个新图层,其中包含两个名为"zip“和"chrlabel”的多边形。

2)我使用这个框架来启用数据驱动页面,然后将其隐藏在主框架后面(我不想看到这些多边形,我只想用它们来控制数据驱动页面)。

3)在邮政编码标签中,我尝试编写如下伪代码的VBScript表达式:

测试=“

如果test = "zip“,那么

标签= ZIP

否则

label = CHRLABEL

endif

这不起作用,因为动态文本不能解析为VBScript中的页面名称。

有没有什么方法可以在VBScript中调用页面名称,这样我就可以正常工作了?

如果没有,有没有其他方法呢?

我的另一个想法是在用1或0填充的层中添加另一个字段。然后,我可以用if NewField = 1替换if-then测试条件。

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-14 08:30:47

8个月太晚了,但对子孙后代来说...

你在给自己制造困难--设置一个复制层并使用不同的层,然后调整层的可见性会容易得多。对于这类事情,我不太熟悉VBScript,但在Python (使用ESRI的库)中,它看起来类似于Python2.6,仅限ArcMap 10 - sample,没有调试过,但我经常做类似的事情

代码语言:javascript
复制
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在这方面做得很好。(您应该能够很容易地从该页面访问所有其他Python文档。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5425659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档