• ArcGIS中字段计算器(高级计算VBScript、Python)


    ArcGIS Pro学习加我的微信号和微信公众号

    微信号,

    微信公众号

    在ArcGIS中可以使用Python或VBScript来对属性表进行高级计算。
    Python是ArcGIS推荐的脚本语言,例如如果要访问地理处理功能(包括要素几何)。
    而VBA或VBScript从早期版本的ArcGIS 保存的 .cal文件可能会起作用,或者需要进行最少的修改。

    注意几个小细节部分:
    Python强制将缩进作为语法的一部分。使用两个或四个空格来定义每个逻辑级别。对齐语句块的开头和结尾,并保持一致。
    Python计算表达式字段包含在感叹号(!!)中。
    在命名变量时,需要注意Python区分大小写,因此yeah与Yeah不同。
    VBScript不允许显式声明任何数据类型。所有变量都是隐式Variant。像Dim x as String这样的语句应删除或简化为Dim x。
    输入语句后,如果要将语句写入文件,则可以单击“ 保存”。在加载按钮将提示您查找和选择一个现有计算文件。

    以下将举例几个简单的计算示例:
    Python简单的字符串示例:
    一系列Python字符串函数支持字符串,包括大写,rstrip和replace。
    在字段PERSON_NAME中大写字符串的第一个字符:
    !PERSON_NAME!.capitalize();
    在字段PERSON_NAME的字符串末尾删除所有空格:
    !PERSON_NAME!.rstrip();
    将在“ CITY_NAME ”字段中找到的“上海市”替换为“上海” :
    !CITY_NAME !.replace(“上海市”, “上海”);

    可以通过在Python中建立索引和切片来访问字符串字段中的字符。索引提取在索引位置的字符;切片将获取一组字符。
    !fieldname![0]。含义:第一个字符。输出:“a”
    !fieldname![-2]。含义:倒数第二个字符。输出:“ e”
    !fieldname![1:4]。含义:第二,第三,第四和第五个字符。输出:“ bcd”

    Python还支持使用%运算符进行字符串格式化。
    合并用冒号分隔的FieldA和FieldB:
    “%s:%s” % (!FieldA!, !FieldB!)

    Python提供了用于处理给定半径字段,计算球体的体积:
    4 / 3 * math.pi * !Radius! ** 3

    使用Python表达式执行字段计算时,Python数学规则有效。例如,将两个整数值相除将始终产生整数输出(3/2 = 1)。要获得十进制输出:
    该操作中的数字之一必须为十进制值:3.0 / 2 = 1.5
    使用float函数将值显式转换为float:
    float(3)/2 = 1.5
    float(!Population!) / !Area!

    VBScript字符串函数
    一系列VBScript字符串函数支持字符串,包括Left,InStr和Chr。下面是字段计算器中常用字符串函数的一些VBScript示例。

    左函数:从字符串的左侧返回包含指定数目的字符的Variant(字符串):
    MyStr = Left([MyField], 1)

    右侧函数:从字符串的右侧返回包含指定数量的字符的Variant(字符串):
    MyStr = Right([MyField], 1)

    中间函数:从字符串返回包含指定数量字符的Variant(字符串):
    MyString = “Mid Function Demo” 'Create text string
    FirstWord = Mid(MyString, 1, 3) ’ Returns “Mid”
    LastWord = Mid(MyString, 14, 4) 'Returns “Demo”
    MidWords = Mid(MyString, 5) 'Returns “Function Demo”

    InStr函数:返回一个变量(长整数),该变量指定一个字符串在另一个字符串中首次出现的位置:
    MyPosition = InStr([address], " ")

    替换函数:返回一个字符串,其中指定的子字符串已被另一个子字符串替换了指定的次数:
    NewString = Replace([comments], “#”, “!”)

    Chr函数:返回一个字符串,其中包含与指定字符代码关联的字符:
    NewString = Replace([comments], chr(13), “!”)

    &运算符:用于强制两个表达式的字符串连接:
    MyStr = [MyField1] & " " & [MyField2]

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

    从字段列表中计算每个记录的最大值:
    max([!field1!, !field2!, !field3!])

    从字段列表中计算每个记录的总和:
    sum([!field1!, !field2!, !field3!])

    使用代码块
    Python代码样本-数学
    将字段的值四舍五入到小数点后两位:
    round(!area!, 2)

    使用数学模块可帮助将米转换为英尺。转换被提高到2的幂并乘以面积:
    MetersToFeet((float(!shape.area!)))

    Code Block:
    import math
    def MetersToFeet(area):
    return math.pow(3.2808, 2) * area

    使用Python逻辑计算字段,根据字段值进行分类:
    Reclass(!WELL_YIELD!)

    Code Block:
    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
    注意,如果是汉字编码可能会出现问题,添加前缀u即可,如u"中国",
    在python2里面,u表示unicode string,类型是unicode, 没有u表示byte string,类型是 str。
    在python3里面,所有字符串都是unicode string, u前缀没有特殊含义了

    使用VBScript逻辑计算字段
    根据表达式的值,有条件地执行一组语句:
    Code Block:
    Dim density
    If [POP90_SQMI] < 100 Then
    density = “low”

    elseif [POP90_SQMI] < 300 Then
    density = “medium”

    else
    density = “high”
    end if

    Python代码样本-几何
    计算特征的面积:
    !shape.area!

    计算wkt文本值:
    !shape.wkt!

    计算特征的最大X坐标:
    !shape.extent.XMax!

    计算特征的长度(以码为单位):
    !shape.length@yards!

    计算特征的面积(以英亩为单位):
    !shape.area@acres!

    计算当前日期:
    time.strftime("%d/%m/%Y")

    计算当前日期和时间:
    time.strftime("%d/%m/%Y %H:%M")

    返回最右边的三个字符:
    !SUB_REGION![-3:]

    用小写“ p”替换大写“ P”的所有情况:
    !STATE_NAME!.replace(“P”,“p”)

    用空格分隔符连接两个字段:
    !SUB_REGION! + " " + !STATE_ABBR!

    Python随机值
    使用numpy网站包可计算0.0到1.0之间的随机浮点值:
    getRandomValue()

    Code Block:
    import numpy.random as R

    def getRandomValue():
    return R.random()

    计算空值:
    使用Python表达式,可以使用Python None来计算空值(仅当字段可为空时,以下计算才有效),使用Python None来计算空值:
    “None”

    详情请见ArcGIS帮助文档

  • 相关阅读:
    HTML当中特殊字符的表示
    溢出文本用“...”代替
    【转】图标字体化浅谈
    字体在网页中画ICON图标
    图片轮播
    js获取网页屏幕可视区域高度
    MVC入口程序 | 简单调用及实例化
    初学者对于MVC架构模式学习与理解
    PHP初学习笔记(2015/4/8)
    linux常用20命令 --转载
  • 原文地址:https://www.cnblogs.com/gisoracle/p/13619729.html
Copyright © 2020-2023  润新知