• 【281】◀▶ arcpy.mapping 常用类说明


    1. arcpy.mapping 教程入门
    2. arcpy.mapping 指导原则
    3. 按字母顺序排序的 arcpy.mpping 类列表
    4. 按字母顺序排序的 arcpy.mpping 函数列表
    5. 按字母顺序排序的 arcpy.mapping 常量列表

    参考:


    01   mapping.MapDocument 用于访问地图文档 (.mxd) 属性和方法。
    02   mapping.DataFrames 用于访问多个数据框属性的 DataFrame 对象。
    03   mapping.Layer 用于对图层的属性和方法进行访问。
    04   mapping.TextElement
    页面布局中重新定位文本以及修改文本字符串和字号。
    05   mapping.LegendElement 页面布局中重新定位和调整图例元素的样式。
    06   mapping.MapSurroundElement 用于访问能够在页面布局中重新定位以及识别父数据框的属性。
    07   mapping.UniqueValuesSymbology 可访问用于更改图层唯一值符号系统外观的各种属性。
    08   mapping.GraduatedColorsSymbology 可访问用于更改图层分级色彩符号系统外观的各种属性。
    09   mapping.RasterClassifiedSymbology
    用于更改图层栅格分类符号系统外观的各种属性。
    10   mapping.LabelClass 用于访问图层的标注类属性。
       
    -------------------
    --------------------------------------------------------------------------------------

    序号 类名称  

    功能说明

      语法 & 举例
    01 mapping.MapDocument  

    ====<<<< Description >>>>====

    用于访问地图文档 (.mxd) 属性和方法。对于此对象的引用对大多数地图脚本操作都十分重要。
    使用
    MapDocument 函数创建 MapDocument 对象的方法有两种。第一种,也是首推方法,即提供磁盘上地图文档 (.mxd) 位置的系统路径。第二种方法是将 CURRENT 关键字作为 MapDocument 函数的输入参数。该方法仅适用于 ArcMap 应用程序内部,因为 MapDocument 对象引用当前加载到 ArcMap 应用程序中的地图文档。
    ----------------------------------------------------------------------------------

    ====<<<< Syntax >>>>====

    mapping.MapDocument (mxd_path)
    ----------------------------------------------------------------------------------

    ====<<<< Parameters >>>>====

    ◈  mxd_path:一个包含现有地图文档 (.mxd) 的完整路径和文件名的字符串,或者包含关键字 CURRENT 的字符串。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈  activeDataFrame:返回 DataFrame 对象,当前激活的数据框。(只读)
    ◈  activeView:返回当前激活的数据框名称(地图模式)或者"PAGE_LAYOUT"(布局模式)。(读写)
    ◈  dateSaved:返回 Python datetime 对象,文件保存时间。(只读)
    ◈  filePath:返回一个字符串值,该值为地图文档路径和文件名。(只读)
    ◈  pageSize:返回一个元组,包含 width 和 height(只读)
    ◈  relativePaths:True 设置为相对路径,False 设置为完全路径。(读写)
    ◈  author:(读写)
    ◈  title:(读写)
    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈  save ():保存一个映射文档(.mxd)
    ◈  saveACopy (file_name, {version}):可选择将地图文档 (.mxd) 保存为新文件或较早版本。

     

     

    #通过MapDocument获取dataframe,从而获取每一个图层
    import arcpy
    mxd = arcpy.mapping.MapDocument(r"C:ProjectProject.mxd")
    df = arcpy.mapping.ListDataFrames(mxd, "图层")[0]
    inLayer=arcpy.mapping.ListLayers(mxd, "", df)
    for layer in inLayer:
        #打印图层名称
        print layer.name
    
    >>> mxd.activeView
    u'PAGE_LAYOUT'
    >>> mxd.activeView
    u'Layers'
    >>> mxd.dateSaved
    datetime.datetime(2018, 4, 23, 9, 51, 6)
    >>> mxd.pageSize
    PageSize(width=21.0, height=10.0)
    >>> mxd.saveACopy(r"D:	mpalex.mxd", "9.3")
    
    02 mapping.DataFrame  

    ====<<<< Description >>>>====

    地图文档 (.mxd) 中找到的用于访问多个数据框属性的 DataFrame 对象。对 DataFrame 对象的引用经常作为多个函数的参数使用,以便在特定数据框中过滤图层或表格。
    DataFrame 对象可用于访问重要的数据框属性。ListDataFrames 函数返回 DataFrame 对象的 Python 列表。随后,必须遍历列表中的每个项目,或指定一个索引号以引用具体的 DataFrame 对象。

    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈  name:返回数据框架的名字。

    ----------------------------------------------------------------------------------

     ====<<<< Methods >>>>====

    ◈   panToExtent (extent):漫游并居中数据框架。
    ◈   zoomToSelectedFeatures ():改变数据框架范围匹配选择的要素。

       

     

     03 mapping.Layer

     

     

    ====<<<< Description >>>>====

    用于对图层的属性和方法进行访问。它可以引用地图文档 (.mxd) 或图层 (.lyr) 文件中的图层。(也可以创建栅格和矢量的图层,通过 ListRasters 函数 等实现)
    ----------------------------------------------------------------------------------

    ====<<<< Syntax >>>>====

     mapping.Layer (lyr_file_path)
    ----------------------------------------------------------------------------------

     ====<<<< Parameters >>>>====

     ◈  lyr_file_path:图层文件 (.lyr) 的完整路径和名称的字符串。也可以是 shapefile 和 raster 文件的完成路径+名称。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈   isFeatureLayer:返回一个字符串值,该值为地图文档路径和文件名。Boolean
    ◈   isGroupLayer:如果图层是图层组,则返回 True。Boolean
    ◈   isRasterLayer:如果图层是栅格图层,则返回 True。Boolean
    ◈   symbology只读。返回对图层符号系统类的引用。
    ◈   symbologyType只读。返回表示图层的符号系统类类型的字符串。并非所有图层符号系统类类型均受支持,对于那些不受支持的类型,返回关键字 OTHER。以下是可能值列表:
      GRADUATED_COLORS:GraduatedColorsSymbology 类。
      GRADUATED_SYMBOLS:GraduatedSymbolsSymbology 类。
      OTHER:表示不受支持的图层符号系统类的字符串。
      UNIQUE_VALUES:UniqueValuesSymbology 类。
      RASTER_CLASSIFIED:栅格图层的 RasterClassifiedSymbology 类。
    ◈   elementWidth:元素的宽度(以页面单位计)。Double
    ◈   elementPositionX:数据框元素的锚点位置对应的 X 位置。Double
    ◈   elementPositionY:数据框元素的锚点位置对应的 Y 位置。Double
    ◈   fontSize:元素的字体大小(以页面单位计)。Double
    ◈   name:元素的名称。String
    ◈   type:返回任何给定页面布局元素的元素类型。String
    ◈   datasetName:以图层数据集在工作空间(非 TOC)中显示的方式返回其名称。name 为 TOC 显示名称。
    ◈   workspacePath:用于设置或获取图层的最小比例阈值。
    ◈   dataSource:返回图层数据源的完整路径。包括 workspacePath 和 datasetName 属性的组合。
    ◈   longName:如果图层不属于图层组,则长名称等于图层名称。如果图层属于图层组,则图层组结构将包含在长名称中。例如,与另一图层组一同嵌套在某个图层组中的图层名称可能为 Group1Group2LayerName。

    ◈   labelClasses:通过返回 LabelClass 对象的列表,提供对图层的标注类属性的访问。

    ◈   showLabelds:控制图层标注的显示。如果设置为 True,则显示标注;如果设置为 False,则不会绘制标注。Boolean
    ◈   maxScale:用于设置或获取图层的最大比例阈值。(1:1000 的化,就将其赋值为 1000)比例尺大于此就不显示了。赋值为 0 表示不设置此值,可以在所有范围内显示。
    ◈   transparency:用于获取或设置透明度值。( eg. 50 )
    ◈   visible:控制图层的显示。Boolean
    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈   save ():保存一个 (.lyr) 文件
    ◈   saveACopy (file_name, {version}):将图层 (.lyr) 文件另存为其他文件名称,或较早版本。
    ◈   support (layer_property):并非所有图层都支持相同的属性集。supports 属性可用来测试图层支持的属性。
      LABELCLASSES:指定图层是否包含 LabelClass。Boolean
      SHOWLABELS:指定标签是否显示。Boolean
      SYMBOLOGY:指定图层是否设置 Symbology。Boolean
      VISIBLE:指定图层是否可见。Boolean

     
    >>> import arcpy
    >>> mxd = arcpy.mapping.MapDocument("current")
    >>> df = arcpy.mapping.ListDataFrames(mxd)[0]
    >>> lyrs = arcpy.mapping.ListLayers(df)
    >>> lyr = lyrs[4]
    >>> lyr
    <map layer u'CNTRY92'>
    >>> e = lyr.getExtent()
    >>> e
    <Extent object at 0x2a6d6d10[0x29dfbce0]>
    >>> e.XMax
    180.25862595419844
    >>> e.XMin
    -180.25862595419844
    
    >>> arcpy.env.workspace = r"D:GeoDataWORLD"
    >>> shps = arcpy.ListFeatureClasses()
    # 新建 Layer,需要完整路径
    >>> import os
    >>> lyr = arcpy.mapping.Layer(os.path.join(arcpy.env.workspace, shps[0]))
    >>> arcpy.mapping.AddLayer(df, lyr, "BOTTOM")
    
    >>> lyr.minScale
    1000000000.0
    >>> lyr.maxScale
    1000.0
    >>> lyr.maxScale = 0
    >>> lyr.minScale = 0
    
     04 mapping.TextElement  

    ====<<<< Description >>>>====

    TextElement 对象可用于对属性进行访问,这些属性可以在页面布局中重新定位文本以及修改文本字符串和字号。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈   text:与元素相关联的文本字符串。String
    ◈   angle:元素的文本基线角度(以度为单位)。Double
    ◈   elementHeight:元素的高度(以页面单位计)。Double
    ◈   elementWidth:元素的宽度(以页面单位计)。Double
    ◈   elementPositionX:数据框元素的锚点位置对应的 X 位置。Double
    ◈   elementPositionY:数据框元素的锚点位置对应的 Y 位置。Double
    ◈   fontSize:元素的字体大小(以页面单位计)。Double
    ◈   name:元素的名称。String
    ◈   type:返回任何给定页面布局元素的元素类型。String
        DATAFRAME_ELEMENT:数据框元素
        GRAPHIC_ELEMENT:图形元素
        LEGEND_ELEMENT:图例元素
        MAPSURROUND_ELEMENT:地图整饰要素元素
        PICTURE_ELEMENT:图片元素
        TEXT_ELEMENT:文本元素
    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈   clone ({suffix}):提供了一种克隆页面布局中现有图形文本的机制。suffix 会在原名称后面添加相应后缀。(位置重叠)
    ◈   delete ():提供了一种删除页面布局中现有文本元素的机制。

     

    实现:修改文本内容

     

    05 mapping.LegendElement  

    ====<<<< Description >>>>====

    LegendElement 对象可用于对属性和方法进行访问,这些属性和方法用于在页面布局中重新定位和调整图例元素的大小以及修改其标题和图例项。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈   name:元素的名称。String
    ◈   items:返回表示图例项目名称的字符串的列表(对应相应图层的名称)。String
    ◈   parentDataFrameName:表示相关元素的数据框名称的字符串。String
    ◈   title:表示图例标题的文本字符串。String

    ◈   elementHeight:元素的高度(以页面单位计)。Double
    ◈   elementWidth:元素的宽度(以页面单位计)。Double
    ◈   elementPositionX:数据框元素的锚点位置对应的 X 位置。Double
    ◈   elementPositionY:数据框元素的锚点位置对应的 Y 位置。Double
    ◈   fontSize:元素的字体大小(以页面单位计)。Double
    ◈   type:返回任何给定页面布局元素的元素类型。String
        DATAFRAME_ELEMENT:数据框元素
        GRAPHIC_ELEMENT:图形元素
        LEGEND_ELEMENT:图例元素
        MAPSURROUND_ELEMENT:地图整饰要素元素
        PICTURE_ELEMENT:图片元素
        TEXT_ELEMENT:文本元素

    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈   adjustColumnCount (column_count):设置图例的列数。
    ◈   listLegendItemLayers ():为图例中每个图例项返回图层对象引用的列表。
      返回值:Layer 对象,图层对象的 Python 列表。每个图例项引用一个图层。
    ◈   removeItem (legend_item_layer, {index}):removeItem 方法用于从布局上的图例中移除图例项。
      legend_item_layer:一个在图例中使用的层的引用。
    ◈   updateItem (legend_item_layer, {legend_item_style_item}, {preserve_item_sizes}, {use_visible_extent}, {show_feature_count}, {use_ddp_extent}, {index}):updateItem 方法用于更新布局上的图例中图例项的各属性。

     

    实现:

    1. 列举图例引用的图层
    2. 删除图例中不需要的引用
    3. 修改图例的宽度

    >>> legend = legends[0]
    >>> legend.items
    [u'CITIES', u'world']
    >>> legend.title
    u'Legend'
    >>> legend.title = "图例"
    >>> legend.adjustColumnCount(2)
    
    06 mapping.
    MapSurroundElement
     

    ====<<<< Description>>>>====

    用于访问能够在页面布局中重新定位以及识别父数据框的属性。(指北针、比例尺等)
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈   parentDataFrameName:读写,与此要素相关联的数据框名称。
    ◈   elementHeight:元素的高度(以页面单位计)。Double
    ◈   elementWidth:元素的宽度(以页面单位计)。Double
    ◈   elementPositionX:数据框元素的锚点位置对应的 X 位置。Double
    ◈   elementPositionY:数据框元素的锚点位置对应的 Y 位置。Double
    ◈   name:元素的名称。String
    ◈   type:返回任何给定页面布局元素的元素类型。String
        DATAFRAME_ELEMENT —数据框元素
        GRAPHIC_ELEMENT —图形元素
        LEGEND_ELEMENT —图例元素
        MAPSURROUND_ELEMENT —地图整饰要素元素
        PICTURE_ELEMENT —图片元素
        TEXT_ELEMENT —文本元素

     
    >>> mse = arcpy.mapping.ListLayoutElements(mxd, "MAPSURROUND_ELEMENT")
    >>> mse
    [<MapSurroundElement object at 0x2734a970[0x27056930]>,
     <MapSurroundElement object at 0x2734a9f0[0x27056bb0]>]
    >>> mse1 = mse[0]
    >>> mse1.name
    u'Alternating Scale Bar'
    >>> mse2 = mse[1]
    >>> mse2.name
    u'North Arrow'
    >>> mse2.elementPositionX
    0.5990000000001601
    >>> mse2.elementPositionY
    8.027599999999438
    
    07 mapping.
    UniqueValuesSymbology
     

    ====<<<< Description>>>>====

    可访问用于更改图层唯一值符号系统外观的各种属性。
    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈  addAllValues ():将所有唯一值添加到符号系统中。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈  classDescriptions:读写,用于表示各个唯一值的描述的列表。
    ◈  classLabels:读写,用于表示各个唯一值的显示值的列表。
    ◈  classValues:读写,用于表示类别明细的字符串或数值的列表。
    ◈  showOtherValues:读写,将此值设置为 True 将会显示与 classValues 当前列表不匹配的所有值的符号。
    ◈  valueField:读写,表示用于图层唯一值符号系统的有效数据集字段名称的字符串。

    ----------------------------------------------------------------------------------

    说明:如果需要修改图例中 label 的名称,需要通过修改 classLabels 中的名称,并将新的 list 为其赋值。(其他属性的修改方式类似)

      要访问图层符号系统的所有属性和设置,例如更改单个类的单个符号,需要在 ArcMap 用户界面中进行操作,并将它们保存到图层文件中。随后可使用 UpdateLayer 函数将这些自定义设置应用于现有图层。

    参考:Replacing "_" with " " for classLabels using Python

     
    >>> import arcpy
    >>> mxd = arcpy.mapping.MapDocument("current")
    >>> df = arcpy.mapping.ListDataFrames(mxd)[0]
    >>> lyrs = arcpy.mapping.ListLayers(df)
    >>> lyr_world = lyrs[7]
    >>> lyr_world
    <map layer u'world'>
    >>> lyr_world.symbologyType
    u'UNIQUE_VALUES'
    >>> uvs = lyr_world.symbology
    
    # 获取对应的 label 值对应的列表
    >>> list = uvs.classLabels
    # 修改相关的值
    >>> list[1] = "alex"
    >>> list[0] = "alex"
    # 将 list 进行赋值,可以在图例上面显示差别
    >>> uvs.classLabels = list
    >>> arcpy.RefreshActiveView()
    
    08 mapping.
    GraduatedColorsSymbology
     

    ====<<<< Description>>>>====

    可访问用于更改图层分级色彩符号系统外观的各种属性。
    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈  reclassify ():将图层符号系统重置为图层数据源信息和统计数据。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈  classBreakDescriptions:读写,用于表示各个类别明细值描述的字符串的排序列表。
    ◈  classBreakLabels:读写,用于表示各个类别明细标注的字符串的排序列表。
    ◈  classBreakValues:读写,包括表示类别明细的最小值和最大值的双精度值的排序列表。list[0] 在用户界面上不显示。
    ◈  normalization:读写,表示用于归一化的有效数据集字段名称的字符串。
    ◈  numClasses:读写,表示当前分类方法将要使用的类别数量的长整型值。(分类数量,有些模式下不能修改)
    ◈  valueField:读写,表示用于图层分类符号系统的有效数据集字段名称的字符串。

     
    >>> sym = lyr_world.symbology
    >>> sym
    <GraduatedColorsSymbology object at 0x26b4f8b0[0xb104580]>
    >>> sym.classBreakLabels
    [u'1041.095 - 114334.976', u'114334.977 - 309842.694', 
    u'309842.695 - 655357.689', u'655357.690 - 1216700.056', 
    u'1216700.057 - 8326644.804']
    >>> sym.classBreakLabels[0]="alex"
    >>> arcpy.RefreshTOC()
    >>> list = sym.classBreakLabels
    >>> list[0] = "alex"
    >>> sym.classBreakLabels = list
    >>> arcpy.RefreshTOC()
    >>> list_values = sym.classBreakValues
    >>> list_values
    [1041.095, 114334.976, 309842.694, 655357.689, 1216700.056, 8326644.804]
    >>> list_values[1] = 300000
    >>> list_values[2] = 600000
    >>> list_values[3] = 1200000
    >>> sym.classBreakValues = list_values
    >>> sym.numClasses
    5
    
     09

    mapping.
    RasterClassifiedSymbology

     

    ====<<<< Description >>>>====

    RasterClassifiedSymbology 类可访问用于更改图层栅格分类符号系统外观的各种属性。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈   text:与元素相关联的文本字符串。String
    ◈   angle:元素的文本基线角度(以度为单位)。Double
    ◈   elementHeight:元素的高度(以页面单位计)。Double
    ◈   elementWidth:元素的宽度(以页面单位计)。Double
    ◈   elementPositionX:数据框元素的锚点位置对应的 X 位置。Double
    ◈   elementPositionY:数据框元素的锚点位置对应的 Y 位置。Double
    ◈   fontSize:元素的字体大小(以页面单位计)。Double
    ◈   name:元素的名称。String
    ◈   type:返回任何给定页面布局元素的元素类型。String
        DATAFRAME_ELEMENT —数据框元素
        GRAPHIC_ELEMENT —图形元素
        LEGEND_ELEMENT —图例元素
        MAPSURROUND_ELEMENT —地图整饰要素元素
        PICTURE_ELEMENT —图片元素
        TEXT_ELEMENT —文本元素
    ----------------------------------------------------------------------------------

    ====<<<< Methods >>>>====

    ◈   delete ():提供了一种删除页面布局中现有文本元素的机制。

       
    10 mapping.LabelClass  

    ====<<<< Description>>>>====

    用于访问图层的标注类属性。【Layer.labelClasses】

    labelClasses 属性将会返回 LabelClass 对象的列表。要引用具体的 LabelClass 对象,则需要对列表中的每个项目进行循环,或提供具体的索引编号。
    ----------------------------------------------------------------------------------

    ====<<<< Attributes >>>>====

    ◈  className:用于获取或设置图层的单个标注类名称。
    ◈  dexpression:用于获取或设置图层的单个标注类表达式。这可以简单到只有一个字段,也可以使用 VBScript、JScript 或 Python 表达式来进行更高级的表达。
    ◈  dSQLQuery:用于获取或设置图层的单个标注类 SQLQuery。
    ◈  dshowClassLabels:用于获取或设置单个标注类的可见性。

    参考:【311】Python 构建 ArcMap 标注表达式

     
    # 判断是否可以显示标签
    >>> world_lyr.supports("SHOWLABELS")
    True
    
    # 设置显示标签并刷新
    >>> world_lyr.showLabels = True
    >>> arcpy.RefreshActiveView()
    
    # 获取标注信息
    >>> for lblClass in world_lyr.labelClasses:
    ...     print lblClass.className
    ...     print lblClass.expression
    ...     print lblClass.SQLQuery
    
    ----
    -------------------
     
    --------------------------------------------------
       
  • 相关阅读:
    RF学习笔记
    解决pycharm下git命令使用时中文显示乱码
    Django2.2 学习笔记1-概念篇
    cookie、session、token的理解
    win10下安装与使用mysql
    Redis学习笔记
    MongoDB与pymongo学习笔记
    记:打开Charles后,win10 chrome访问https的网站提示“您的链接不是私密链接”的解决过程
    charles抓包教程
    jmeter遍历时间戳
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/8134704.html
Copyright © 2020-2023  润新知