摘要
可用于将图层插入到数据框或地图文档 (.mxd) 中的图层组内的特定位置处。
说明
因使用了参考图层来指定准确位置,InsertLayer 可在数据框或图层组中更为精确地定位图层。可在参考图层之前或之后添加图层。
如果参考图层参考了位于数据框根级的图层,那么所插入的图层将添加到数据框的根级中。如果参考图层参考了图层组中的图层,则所插入的图层将添加到该图层组中。因为参考图层为必需参数,所以无法使用 InsertLayer 将图层添加到空数据框或空图层组中。AddLayer 或 AddLayerToGroup 函数则可分别将图层添加到空数据框或图层组中。
插入的图层必须参考已存在的图层(请注意,图层也可以是图层组)。源图层可以来自磁盘上的图层文件、同一地图文档和数据框、同一地图文档不同数据框乃至完全独立的地图文档。
添加图层后,图层在内容列表 (TOC) 中的显示方式取决于源图层及其显示方式。例如,在 TOC 中,有些图层完全折叠且不显示其符号。此设置内置在图层中。如果图层折叠且保存在图层文件中,然后被添加到地图文档中,则通过 InsertLayer 添加该图层时,图层在新的地图文档中将显示为折叠状态。
语法
InsertLayer (data_frame, reference_layer, insert_layer, {insert_position})
参数 | 说明 | 数据类型 |
data_frame | A reference to a DataFrame object into which the new layer will be inserted. | DataFrame |
reference_layer | A Layer object representing an existing layer that determines the location where the new layer will be inserted. | Layer |
insert_layer | A reference to a Layer object representing the layer to be inserted. | Layer |
insert_position | A constant that determines the placement of the added layer relative to the reference layer.
(默认值为 BEFORE) | String |
代码示例
InsertLayer 示例 1:
以下脚本会插入来自磁盘上的图层文件 (.lyr) 中的新图层,并将其放置于 County Maps 数据框内名为 Lakes 的图层前。
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
refLayer = arcpy.mapping.ListLayers(mxd, "Lakes", df)[0]
insertLayer = arcpy.mapping.Layer(r"C:\Project\Data\Rivers.lyr")
arcpy.mapping.InsertLayer(df, refLayer, insertLayer, "BEFORE")
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd, insertLayer
InsertLayer 示例 2:
以下脚本将插入一个来自其他独立地图文档的名为 Rivers 的图层,并将其插入到 County Maps 数据框内名为 Lakes 的图层上方。
import arcpy
#Reference layer in secondary map document
mxd2 = arcpy.mapping.MapDocument(r"C:\Project\ProjectTemplate.mxd")
df2 = arcpy.mapping.ListDataFrames(mxd2, "Layers")[0]
insertLayer = arcpy.mapping.ListLayers(mxd2, "Rivers", df2)[0]
#Insert layer into primary map document
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "County Maps")[0]
refLayer = arcpy.mapping.ListLayers(mxd, "Lakes", df)[0]
arcpy.mapping.InsertLayer(df, refLayer, insertLayer, "BEFORE")
#Save to a new map document and clear variable references
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd, mxd2, insertLayer