ArcGIS 10

汇总

为要素类、要素图层或栅格目录计算字段的值。

查看计算字段工具的使用示例

用法

  • partCount)进行创建。

    !shape.area!
  • !shape.length@kilometers!)。如果数据存储在地理坐标系中且具有线性单位(例如英里),则使用测地线算法计算长度。在地理数据中使用面积单位会产生不正确的结果,这是由于沿 globe 的十进制度并不一致。

    • 面积测量单位关键字:
        英亩 | 公亩 | 公顷 | 平方厘米 | 平方分米 | 平方英寸 | 平方英尺 | 平方千米 | 平方米 | 平方英里 | 平方毫米 | 平方码 | 平方地图单位 | 未知
  • 线性测量单位关键字:
      厘米 | 十进制度 | 分米 | 英尺 | 英寸 | 千米 | 米 | 英里 | 毫米 | 海里 | 磅 | 未知 | 码
  • 表达式参数中,或者使用“字段计算器”以交互方式构建表达式。

  • 按属性选择图层内的查询中创建的要素集)时,此工具将只更新所选的记录。

  • 每次操作仅能对一个字段应用计算。

  • 现有字段值将被覆盖。如果想要保留原始字段值,应创建输入表副本

  • !字段名!)。

    [字段名])。

  • 表达式参数中输入数值;值的两旁无需加引号。

  • 随机值的分布语法中进行介绍。

  • 表达式与代码块会相互连接。代码块必须返回与表达式的关联;代码块的结果应传入到表达式中。

  • 代码块参数可用于创建复杂表达式。您可以在对话框中直接输入代码块,或在脚本中将代码块作为连续字符串输入。

  • 代码块参数使用。您可以导入附加模块。数学模块可提供数论函数与表达函数、幂函数与对数函数、三角函数、角度转换函数、双曲函数以及数学常数。要了解更多有关数学模块的内容,请参阅 Python 的帮助。

  • 保存的 ArcGIS 先前版本的 VB .cal 文件可以直接使用或者只需做少量修改后即可使用。如果拥有使用 ArcObjects 的过去版本的 VBA 代码,则计算需经过修改后才能用于 10.0。

  • 计算连接数据时,您无法直接计算连接列。然而,您可以直接计算源表的列。要计算连接数据,必须先将连接表或连接图层添加至 ArcMap。然后可以分别对此数据执行计算。这些更改将反映在连接列中。

  • 计算字段示例
  • 语法

    CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
    参数 说明 数据类型
    in_table

    此表包含将通过新的计算进行更新的字段。

    Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View
    field

    将通过新的计算进行更新的字段。

    Field
    expression

    使用简单计算表达式创建的值将用于填充所选行。

    SQL Expression
    expression_type
    (可选)

    指定要使用的表达式的类型。

    • VB表达式将使用标准 VB 格式编写。这是默认设置。
    • PYTHON表达式将使用标准 Python 格式编写。地理处理器方法和属性的使用与创建 9.2 版地理处理器相同。
    • PYTHON_9.3表达式将使用标准 Python 格式编写。地理处理器方法和属性的使用与创建 9.3 版地理处理器相同。
    String
    code_block
    (可选)

    允许为复杂表达式输入代码块。

    String

    代码示例

    CalculateField 示例(Python 窗口)

    以下 Python 窗口脚本演示了如何在立即模式下使用 CalculateField 函数。

    import arcpy
    from arcpy import env
    env.workspace = "C:/data"
    arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")
    arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", 
                                    '!VEG_TYPE!.split(" ")[-1]', "PYTHON")
    CalculateField 示例:计算质心

    使用 CalculateField 将质心值分配给新字段。

    # Name: CalculateField_Centroids.py
    # Description: Use CalculateField to assign centroid values to new fields
    
     
    # Import system modules
    import arcpy
    from arcpy import env
    
    try: 
        # Set environment settings
        env.workspace = "C:/data/airport.gdb"
     
        # Set local variables
        inFeatures = "parcels"
        fieldName1 = "xCentroid"
        fieldName2 = "yCentroid"
        fieldPrecision = 18
        fieldScale = 11
        # Expressions are calculated using the Shape Field's geometry property
        expression1 = "float(!SHAPE.CENTROID!.split()[0])"
        expression2 = "float(!SHAPE.CENTROID!.split()[1])"
     
        # Execute AddField
        arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                                  fieldPrecision, fieldScale)
        arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                                  fieldPrecision, fieldScale)
     
        # Execute CalculateField 
        arcpy.CalculateField_management(inFeatures, fieldName1, expression1,
                                        "PYTHON")
        arcpy.CalculateField_management(inFeatures, fieldName2, expression2,
                                        "PYTHON")
    except Exception, e:
        # If an error occurred, print line number and error message
        import traceback, sys
        tb = sys.exc_info()[2]
        print "Line %i" % tb.tb_lineno
        print e.message
    
    
    CalculateField 示例:计算范围

    使用具有代码块的 CalculateField 计算基于范围的值。

    # Name: CalculateField_Ranges.py
    # Description: Use CalculateField with a codeblock to calculate values
    #  based on ranges
    
     
    # Import system modules
    import arcpy
    from arcpy import env
     
    # Set environment settings
    env.workspace = "C:/data/airport.gdb"
     
    # Set local variables
    inTable = "parcels"
    fieldName = "areaclass"
    expression = "getClass(float(!SHAPE.area!))"
    codeblock = """def getClass(area):
        if area <= 1000:
            return 1
        if area > 1000 and area <= 10000:
            return 2
        else:
            return 3"""
     
    # Execute AddField
    arcpy.AddField_management(inTable, fieldName, "SHORT")
     
    # Execute CalculateField 
    arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON", 
                                    codeblock)
    CalculateField 示例:计算随机值

    使用 CalculateField 将随机值分配给新字段。

    # Name: CalculateField_Random.py
    # Description: Use CalculateField to assign random values to a new field
     
      
    # Import system modules
    import arcpy
    from arcpy import env
     
    # Set environment settings
    env.workspace = "C:/data/airport.gdb"
      
    # Set local variables
    inFeatures = "parcels"
    fieldName = "RndValue"
    expression = "arcgis.rand('Integer 0 10')"
     
    # Execute AddField
    arcpy.AddField_management(inFeatures, fieldName, "LONG")
     
    # Execute CalculateField 
    arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON")
    

    环境

    当前工作空间

    相关主题


     

    来自帮助

    相关文章:

    • 2021-07-18
    • 2022-12-23
    • 2021-07-31
    • 2021-08-14
    • 2021-08-22
    • 2022-12-23
    • 2021-11-30
    • 2021-12-19
    猜你喜欢
    • 2021-07-09
    • 2022-12-23
    • 2021-12-29
    • 2022-01-10
    • 2022-12-23
    • 2021-08-29
    • 2021-12-15
    相关资源
    相似解决方案