分块标注转注记 (制图)
摘要
基于面索引图层将地图文档中的各图层的标注转换为注记。
该工具将地图划分为多个分块并依次为每一块创建注记。这非常适合于将大量标注转换为注记。面索引图层可以是使用地图服务器缓存切片方案转换为面或格网索引要素工具生成的图层,也可以是覆盖了要创建注记的区域的任何其他面要素类。
用法
-
标注分类比例范围将被考虑。当该工具生成指定参考比例的注记时,它将仅转换该比例下呈启用状态并且可见的标注分类。
注:在 ArcMap 中,标注分类比例范围可在图层属性中进行设置。配置好标注属性后,请先保存地图文档,再运行该工具。
-
如果在运行该工具之前选择分块,则只会为所选分块创建注记。
-
若只需为面索引图层中的某些分块更新注记,可先选择带有该特定 TileID 值的注记要素并删除它们。然后选择面要素并重新运行该工具。
-
该工具的输出是一系列图层组。在每个图层组中,需要创建注记的每个参考比例均将对应一个组中图层。
-
在 ArcCatalog 或模型构建器工作环境下,可使用保存至图层文件工具将输出图层组写入到图层文件中。使用 ArcMap 时,如果在地理处理选项中选中相关选项,该工具可将图层组添加到视图区域。所创建的图层组是临时性的,如果不保存文档,该图层组将在会话结束后消失。
-
只有使用保存至图层文件工具将图层组保存到图层文件中,ArcCatalog 中创建的图层组才能在 ArcMap 中使用。
-
如果指定的图层名称相同并且已明确声明允许覆盖输出,则现有图层组将被覆盖。
-
如果数据框中存在重复的要素类名称,则注记中的要素类名之后将添加一个数字(例如,Cities01Anno10000、Cities02Anno10000 等)。
-
即使指定的后缀已存在,也不会覆盖注记要素类。在这种情况下,注记要素类后缀中将添加一个数字(例如,CitiesAnno10000、CitiesAnno10000_1 等)。
-
注记要素类的参考比例可通过以下两种方式之一指定。
- 第一种是,通过面索引图层中的某个字段来确定输出注记要素类的参考比例。如果要为各个比例级别创建注记,则可以选用这种方式。
- 第二种就是明确声明一个参考比例值。所有的注记要素类都将使用这个参考比例。如果在地图文档中设置了参考比例,则该参考比例将作为默认值输入到工具中。使用 ArcMap 时,如果尚未设置参考比例,则当前比例将作为默认值。
-
如果使用的是通过地图服务器缓存切片方案转换为面工具创建的面索引图层,请使用参考比例字段的 Tile_Scale 字段。将会为每个图层/Tile_Scale 组合创建新的注记要素类。
-
如果正在生成各个参考比例下的注记,请在每种比例下分别设计地图并避免在数据框中设置参考比例。
-
如果面索引图层中提供坐标系字段,则各分块的注记将投影到该坐标系中,以便进行绘制和放置。
-
与要素关联的注记与地理数据库中另一个要素类中的特定要素相关联。如果选中,则在创建输出注记要素类时,也将自动生成关系类。
-
创建与要素关联的注记时,输出工作空间必须与所连接要素类的输出工作空间相同。
-
某些标注目前可能未显示在地图上,原因是没有供它们显示的空间。要转换这些标注,请选中生成未放置的注记复选框。这样便可将未放置的标注保存到注记要素类中,以便今后在 ArcMap 编辑会话中可以找到它们。
语法
参数 | 说明 | 数据类型 |
map_document |
包含要转换为注记的标注的源地图文档。 | ArcMap Document |
data_frame |
地图文档中包含要转换为注记的标注的数据框。 | String |
polygon_index_layer |
包含分块要素的面图层。 | Table View |
out_geodatabase |
用来保存输出要素类的工作空间。此工作空间可以是现有地理数据库或现有要素数据集。 | Workspace ;Feature Dataset |
out_layer |
存放所生成注记的图层组。在 ArcCatalog 工作环境下,可使用“保存至图层文件”工具将输出图层组写入图层文件中。使用 ArcMap 时,如果在地理处理选项中选中相关选项,该工具可将图层组添加到视图区域。所创建的图层组是临时性的,如果不保存文档,该图层组将在会话结束后消失。 | Group Layer |
anno_suffix |
为每个新注记要素类添加的后缀。该后缀将追加到各新注记要素类的源要素类名称之后。注记的参考比例遵照该后缀。 | String |
reference_scale_value (可选) |
输入要用作注记参考的比例。注记中的所有符号及文本的大小都会参照此处设置的参考比例。 | Double |
reference_scale_field (可选) |
面索引图层中用于确定注记参考比例的字段。注记中的所有符号及文本的大小都会参照此处设置的参考比例。 | Field |
tile_id_field (可选) |
面索引图层中用于唯一标识分块区域的字段。这些值将填充到注记要素类属性表中的 TileID 字段。 | Field |
coordinate_sys_field (可选) |
面索引图层中包含各分块坐标系信息的字段。考虑到存储坐标系信息时所需的字段长度,包含坐标系字段的面索引图层必须为地理数据库要素类。 | Field |
map_rotation_field (可选) |
面索引图层中包含数据框所需旋转角度值的字段。 | Field |
feature_linked (可选) |
许可: 仅当具有 ArcGIS for Desktop Standard 和 ArcGIS for Desktop Advanced 级别许可时,此参数才可用。 选择是否将输出注记要素类关联到其他要素类中的要素。
| Boolean |
generate_unplaced_annotation (可选) |
选择是否根据未放置的标注创建未放置的注记。
| Boolean |
代码实例
import arcpy
from arcpy import env
env.workspace = "C:/data/data.gdb"
arcpy.TiledLabelsToAnnotation_cartography("Annotation.mxd", "Layers",
"Tiles", "data.gdb", "GroupAnno", "Anno", "", "Tile_Scale",
"OID", "", "", "FEATURE_LINKED", "GENERATE_UNPLACED_ANNOTATION")
以下脚本演示了使用 MapServerCacheTilingSchemeToPolygons 函数和 TiledLabelsToAnnotation 函数的工作流。
# Name: TiledLabelsToAnnotation_Example2.py
# Description: Create a tile feature class and use those tiles to create annotation.
# Requirements: ArcGIS for Desktop Advanced license
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/data.gdb"
# Set local variables
inMapDocument = "C:/data/Annotation.mxd"
inDataFrame = "Layers"
inTilingScheme = "C:/Program Files/ArcGIS/Desktop10.2/TilingSchemes/ArcGIS_Online_Bing_Maps_Google_Maps.xml"
outFeatureClass = "C:/data/data.gdb/Tiles"
inTileExtent = "USE_MAP_EXTENT"
inClipping = "CLIP_TO_HORIZON"
inAntialiasing = "NONE"
inScales = ""
# Execute MapServerCacheTilingSchemeToPolygons
arcpy.MapServerCacheTilingSchemeToPolygons_cartography(inMapDocument, inDataFrame, inTilingScheme, outFeatureClass,
inTileExtent, inClipping, inAntialiasing, inScales)
# Set local variables
inMapDocument = "C:/data/Annotation.mxd"
inDataFrame = "Layers"
inPolygonIndexLayer = "Tiles"
inOutGeodatabase = "C:/data/data.gdb"
outOutLayer = "GroupAnno"
inAnnoSuffix = "Anno"
inRefScaleValue = ""
inRefScaleField = "Tile_Scale"
inTileIDField = "OID"
inCoordSysField = ""
inMapRotationField = ""
inFeatureLinked = "STANDARD"
inGenerateUnplaced = "GENERATE_UNPLACED_ANNOTATION"
# Execute TiledLabelsToAnnotation
arcpy.TiledLabelsToAnnotation_cartography(inMapDocument, inDataFrame, inPolygonIndexLayer, inOutGeodatabase,
outOutLayer, inAnnoSuffix, inRefScaleValue, inRefScaleField,
inTileIDField, inCoordSysField, inMapRotationField,inFeatureLinked,
inGenerateUnplaced)