描述
用于对书签方法和属性进行访问。
讨论
ArcGIS Pro 项目中的书签与为其创建这些书签的地图相关联并由这些地图管理。在地图项目上使用 listBookmarks 方法引用这些书签。如果您希望搜索项目内的所有书签,您必须遍历所有地图。书签可使用 zoomToBookmark 方法在页面布局上更新 MapFrame 对象的显示。
尽管书签与特定地图相关联,但书签仍可用于显示不同地图的地图框中。使用 2D 地图创建的书签可与 3D 地图一起使用,反之亦然。创建书签时可根据地图类型设置可用的 Camera 对象属性。如果 2D 书签用于本地或全局地图查看模式,则结果将是感兴趣区域的平面视图。如果将 3D 书签与 2D 地图框类型一起使用,则 3D 照相机属性会大概提供一个平面范围。
共有两个需要更新书签缩略图的场景。首先,由于性能损失从地图文档 (.mxd)、globe 文档 (.3dd) 或 scene 文档 (.sxd) 导入的书签不能自动更新其缩略图 - 由于创建缩略图前需要生成每个感兴趣区域书签并需要绘制出完整的图层,因此应用程序自动执行此流程会花费很长时间。其次,地图中的数据(如底图)可能会发生更改,同时您可能希望相应地更新缩略图。updateThumbnail 方法为这两个场景提供了解决方案。hasThumbnail 属性用于确定哪些书签已被导入并在当前没有缩略图。
方法概述
方法 | 说明 |
updateThumbnail () | 更新书签缩略图。 |
方法
updateThumbnail ()
更新书签缩略图。要确定书签是否具有缩略图,请检查 hasThumbnail 属性。
代码示例
下面的脚本会通过缩放至每个属于名为约塞米蒂国家公园的地图的书签来更新地图框的感兴趣区域,并将结果导出至各个 PDF 文档。
import arcpy, os
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
lyt = aprx.listLayouts("Main Attractions*")[0]
mf = lyt.listElements("MAPFRAME_ELEMENT", "Yosemite National Park*")[0]
bkmks = mf.map.listBookmarks()
for bkmk in bkmks:
mf.zoomToBookmark(bkmk)
lyt.exportToPDF(os.path.join(r"C:\Projects\YosemiteNP", f"{bkmk.name}.pdf"))
del aprx
下面的脚本将循环遍历项目中的所有书签并更新缩略图(如果缺失)。
import arcpy
aprx = arcpy.mp.ArcGISProject(r"C:\Projects\YosemiteNP\Yosemite.aprx")
for m in aprx.listMaps():
for bkmk in m.listBookmarks():
if bkmk.hasThumbnail == False:
bkmk.updateThumbnail()
aprx.save()
del aprx