zoukankan      html  css  js  c++  java
  • Arcgis-Wiki_04-字段计算器

    前言

    使用键盘输入值并不是编辑表中值的唯一方式。在某些情况下,为了设置字段值,可能要对单条记录甚至是所有记录执行数学计算。您可以对所有记录或选中记录执行简单计算和高级计算。

    此外,还可以在属性表中的字段上计算面积、长度、周长和其他几何属性

    简单计算

    计算字符串

    如内容为数值(字符串中可以存储数值,相反则不可以),直接输入即可。

    如内容为字符串,要使用英文双引号引起来。

    涉及到字符串的连接,将多个字段使用&连接即可,例如想要将SHENG和XIAN两个字段连接,同时中间以“-”隔开(Python状态下字段名用!引起,连接使用+):

    [SHENG]&"-"&[XIAN]
    

    计算数值

    简单的加减乘除运算,如计算男人MEN和女人WOMEN的总数:

    [MEN]+[WOMEN]
    

    使用内置函数

    VBScript 函数

    字符串操作

    Asc 返回指定字母的ASCII代码

    Chr 根据ASCII代码返回对应的字符

    String(数目,字符串) 返回具有指定长度的、重复字符组成的字符串,(重复字符取字符串的第一位)例:

    MyString = String(5,"*") '返回"*****"
    MyString = String(5,"ABC") '返回"AAAAA"
    

    Lcase 英文字符转为小写

    MyString = Lcase("BIGHEAD") '返回"bighead"
    

    Ucase 英文字符转为大写

    MyString = Ucase("bighead") '返回"BIGHEAD"
    

    Ltrim 去除左端空格

    MyString = Ltrim(" BIGHEAD") '返回"BIGHEAD"
    

    Rtrim 去除右端空格

    MyString = Rtrim("BIGHEAD ") '返回"BIGHEAD"
    

    Trim 去除左右端空格

    MyString = Trim(" BIGHEAD ") '返回"BIGHEAD"
    

    Left([字段名],length) 自左侧取length个字符

    MyString = Left("BIGHEAD",3) '返回"BIG"
    

    Right([字段名],length) 自右侧取length个字符

    MyString = Right("BIGHEAD",4) '返回"HEAD"
    

    Mid([字段名],起始字符序号,长度) 自第几个字符向右取指定长度的字符(索引从1开始,包含起始字符,长度参数可以省略),例:

    MyString = "Mid Function Demo" '创建一个字符串
    FirstWord = Mid(MyString, 1, 3) ' 返回 "Mid" 
    LastWord = Mid(MyString, 14, 4) '返回 "Demo"
    MidWords = Mid(MyString, 5) '返回 "Function Demo
    

    Len([字段名]) 获取字段长度

    Len("BIGHEAD") '返回7
    

    Space(空格个数) 返回指定个数的空格(可与连字符结合使用在字符串前面或者后面加固定个数的空格)

    MyString = Space(3) & "BIGHEAD" '返回 "   BIGHEAD"
    

    Replace([字段名],"替换前的字符","替换后的字符")

    MyString = Replace("ABC","B","C") '返回 "ACC"
    

    拓展一下

    结合上面函数,组合一个:字段前面补零成为固定长度字符串

    String(目标长度-Len([目标字段]),"0") & [目标字段]
    

    数值操作

    ABS([字段名]) 取绝对值

    ATN ([字段名]) 反正切值

    SIN COS TAN 三角函数

    FIX([字段名]) 返回数的整数部分

    FIX(-8.4)  '返回 -8
    FIX(8.4)  '返回 8
    

    INT ([字段名]) 返回数的整数部分

    Int(-8.4)  '返回 -9
    Int(8.4)  '返回 8
    

    SQR ([字段名]) 返回数的平方根

    SQR(4) '返回 2
    

    LOG EXP 对数,不常用

    Python函数

    Python 计算表达式字段将使用惊叹号 (!!) 括起。

    字符串切片

    此模式综合了VBScript里的left、right和mid函数,但又具有自己独特优点,如截取除前几位或者后几位的字符,不用函数组合。

    !字段名![起始位置下标:结束位置下标]

    索引从0开始;

    表示截取字符串起始位置的字符到结束位置的字符;

    包含起始字符但不包含结束字符;

    截取的字符长度为结束位置下标-起始位置下标;

    冒号前面为空或者0表示从第一位开始截取;

    冒号后面为空表示截取起始位置字符到字符结束,并包含结束字符。

    截取除前几位的字符:!字段名![字符长度:]

    字段名为XIANG 内容为:123456大东方乡 公式:!XIANG![6:] 结果:大东方乡

    截取除后几位的字符:!字段名![:-字符长度]

    字段名为XIANG 内容为:大东方乡123456 公式:!XIANG![:-6] 结果:大东方乡

    截取前几位字符: !字段名![:字符长度]

    字段名为XIANG 内容为:123456大东方乡 公式:!XIANG![:6] 结果:123456

    截取后几位字符: !字段名![-字符长度:]

    字段名为XIANG 内容为:大东方乡123456 公式:!XIANG![-6:] 结果:123456

    数值计算

    Python 提供了处理数字的工具。Python 也支持一些数值和数学函数,包括 math、cmath、decimal、random、itertools、functools 和 operator。

    Python 具有多个可用的内置函数,包括 max、min、round 和 sum。

    这里介绍一下取余符号 %,在获取单行或者获取等高线计曲线(加粗的那根)时会用到

    5 % 2 '返回 1
    

    使用代码块

    代码块的使用方式取决于表达式类型参数。计算字段工具支持将 PYTHON、PYTHON_9.3 和 VB 作为表达式类型。此处只介绍Python代码块,了解即可,如需更深学习,请先行熟悉Python语法。

    各 Python 函数可通过 def 关键字定义,关键字后为函数的名称以及函数的输入参数。函数名称可由您自行选取(不得使用空格,也不得以数字开头)。

    可编写 Python 函数,使 Python 函数能够接受任何数量的输入参数(也可以没有任何参数)。函数将通过 return 语句返回值。

    字段计算器01

    随机值

    解析程序:
    Python
    表达式:
    getRandomValue()
    代码块:
    import numpy
    def getRandomValue():
        return numpy.random.random()
    

    根据某间隔值计算顺序 ID 或数字

    解析程序:
    Python
    表达式:
    autoIncrement()
    代码块:
    rec=0
    def autoIncrement():
        global rec
        pStart = 1 #设置起始值 
        pInterval = 1 #设置间隔值
        if (rec == 0): 
            rec = pStart 
        else: 
            rec = rec + pInterval 
        return rec
    

    按照字段值进行分类

    解析程序:
    Python
    表达式:
    Reclass(!WELL_YIELD!)
    代码块:
    def Reclass(WellYield):
        if (WellYield >= 0 and WellYield <= 10):
            return 1
        elif (WellYield > 10 and WellYield <= 20):
            return 2
        elif (WellYield > 20 and WellYield <= 30):
            return 3
        elif (WellYield > 30):
            return 4
    

    获取最大值字段名称

    解析程序:
    Python
    表达式:
    getMaxFieldName(!GT_YLD!, !GT_GMLD!, !GT_QTLD!, !GT_GD!)
    代码块:
    def getMaxFieldName(GT_YLD, GT_GMLD, GT_QTLD, GT_GD):
        dic = {"GT_YLD": GT_YLD, "GT_GMLD": GT_GMLD, "GT_QTLD": GT_QTLD, "GT_GD": GT_GD}
        return max(dic, key=dic.get)
    

    计算几何属性

    “计算几何”工具可以访问图层的要素几何。根据输入图层的几何,此工具可以计算坐标值、长度和面积。这些计算都可以在字段计算器中计算,而且字段计算器支持更多的几何属性计算。

    以下皆基于Python解析程序,请不要选择与要素类型不匹配的属性。

    指定计算几何属性的单位

    几何字段的面积和长度属性可通过表示为带有 @ 符号的单位类型进行修改。

    面积测量单位

    HECTARES 公顷
    SQUAREMETERS 平方米
    SQUAREKILOMETERS 平方公里
    !shape.area@hectares!
    

    线性测量单位

    METERS 米
    ILOMETERS 公里
    !shape.length@meters!
    

    指定小数位数

    round(!shape.area@hectareas!,4) 以公顷为单位,保留四位小数
    

    计算几何属性

    计算面积

    !shape.area!
    

    计算周长

    !shape.length!
    

    计算最大或最小 x,y 坐标

    !shape.extent.xmax!
    !shape.extent.xmin!
    !shape.extent.ymax!
    !shape.extent.ymin!
    

    计算内部中心点坐标

    (等同于面要素转点,同时要求内部)

    !shape.centroid.x!
    !shape.centroid.y!
    

    计算质心点坐标

    !shape.truecentroid.x!
    !shape.truecentroid.y!
    

    计算是否为多部件

    !shape.ismultipart!
    

    计算多部件个数

    !shape.partcount!
    

    计算折点个数

    !shape.pointcount!
    
  • 相关阅读:
    3.4.4 反射和泛型
    4.4.2 空合并操作符让比较不再痛苦
    NPOI导出EXCEL 打印设置分页及打印标题
    20、异常和状态管理
    14 字符字符串和文本处理
    15、枚举类型和标志位
    Oracle 数据库连接的一些坑
    17、委托
    《山鬼·九歌》——屈原
    每周一卦测感情,还是这么凶
  • 原文地址:https://www.cnblogs.com/bigmonk/p/12363018.html
Copyright © 2011-2022 走看看