一、在Arcgis中打开面要素文件(shp文件-投影坐标!!)

要是面要素文件一开始是经纬度坐标的,可以先将其转换为投影坐标。
我比较喜欢先用91卫图转换坐标。

1、在Arcgis中打开要素文件

在这里插入图片描述

2、打开面要素文件的属性表

在这里插入图片描述

3、打开属性表左上角的表选项

在这里插入图片描述

4、添加字段

在这里插入图片描述

5、输入字段名称、选择精度类型、确定

在这里插入图片描述

二、面积、周长—计算几何

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
上述为计算面积的过程、计算周长是一样的,只不过字段名称、计算几何中的属性是周长。其他过程都是一样的。

三、高度(长度)、宽度—字段计算器

计算长度和宽度时,在添加字段时填写对应的字段名称。
高度:!Shape.extenT.YMax! -!Shape.extenT.YMin!
宽度:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上述高度、宽度就都计算好了。可以对计算的结果用测量工具进行检验。
在这里插入图片描述
在这里插入图片描述
可见结果可靠。

四、最大直径(最大轴长)—字段计算器-显示代码块

添加字段:Max_diameter(但是这个字段名称的长度有一定要求,多出来的字符会被直接删掉)
字段计算器
显示代码块
预逻辑脚本代码:

import math

def true_max_axis_length(shape):
    # 初始化最大长度为0
    max_length = 0.0

    # 获取面要素的第一个部分的折点数组
    # .first() 用于处理可能的多部分要素(MultiPart),我们取第一个图形
    array = shape.getPart(0)

    # 获取顶点总数
    pnt_count = array.count

    # 双层循环,遍历计算每两个点之间的距离
    for i in range(pnt_count):
        for j in range(i + 1, pnt_count): # 从i+1开始,避免重复计算和自身比较
            # 获取第i个和第j个点
            pnt_i = array.getObject(i)
            pnt_j = array.getObject(j)

            # 计算两点间的欧氏距离
            distance = math.sqrt(math.pow(pnt_i.X - pnt_j.X, 2) + math.pow(pnt_i.Y - pnt_j.Y, 2))

            # 更新最大长度
            if distance > max_length:
                max_length = distance

    # 返回计算出的最大长度
    return max_length

表达式框:

true_max_axis_length(!Shape!)

最后点击确定就好了。
在这里插入图片描述
在这里插入图片描述
这里计算稍微慢点,尤其是当面要素文件比较大的时候。
在这里插入图片描述
检验结果准确。
这样所有的就都算完了。
总结就是:
面积、周长——【计算几何】
宽度、长度——【字段计算器】
最大直径——【字段计算器】——【显示代码块】——输入【预逻辑脚本代码】——输入【Max_diamet】
(需要用到python脚本代码块的时候,不论是直径还是其他字段的计算,只要需要用到自己编写的代码时,就用显示代码块,并在预逻辑脚本代码中输入代码即可。)

最后Arcgis的帮助系统

在Arcgis的帮助系统中也有一些常规的使用python计算字段的代码示例。可以现在这里面看看有没有需要的。
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐