Arcgis计算面要素的面积、周长、宽度、长度及最大直径

一、在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计算字段的代码示例。可以现在这里面看看有没有需要的。

相关推荐
troy12811 小时前
Codex 安全盲区:代码漏洞生成实测
windows·python·ci/cd·pycharm·django·github·fastapi
嵌入式学习菌11 小时前
Workbuddy自动写一个RS485 / LoRa 参数调试工具
python
钱栈up12 小时前
番茄小说榜单爬虫失效排查:从页面路由变更到API参数映射的全流程复盘
python
唐璜Taro12 小时前
Agent Harness 系列 · 第 1 篇|Agent 不只是换一个更强的模型
人工智能·python
泡茶喝茶写代码13 小时前
量化数据进阶:多维实战篇(第 11 篇):历史涨跌停价:涨跌停序列与止损线测算
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
ikun_文13 小时前
Django开启跨域请求
python·pycharm·django
外收内放13 小时前
Python与AI应用(项目开发实战:AI智能伴侣第三版)
python·学习·ai编程
别动我齐刘海13 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
Logintern0913 小时前
“以一致的顺序获取锁“是预防死锁最核心、最有效的手段
python·postgresql·锁机制
打工仔折腾 AI14 小时前
Prometheus 告警推钉钉:从单群 Webhook 到跨网络 Alertmanager 实战
人工智能·后端·python·性能优化