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

相关推荐
神也畏惧菠萝10 小时前
Day08 Python流程控制从入门到上瘾:if/match/while/for四件套,从B站登录一路打到猜数字游戏
python·算法·数据存储·for·while·if·ifelse
言乐610 小时前
通过 3D 动画直观演示球形瓶内可滑动半圆机构在倾倒时防粘盖、回正时刮膏体的运动学过程
python·3d·django·virtualenv·pygame
quantdash_cc10 小时前
ETF 行情数据清洗实战:字段语义拆解、标的池整理与五个校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
小熊恋旧11 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
威哥爱编程11 小时前
Python 智能体开发实战 05:一问教材内容它就编?先把答案从你自己的资料里检索出来
python·agent
java_prinln11 小时前
RAG 面试题介绍
python·agent
威哥爱编程11 小时前
Python 智能体开发实战 06:一个函数里塞了八百行?用状态机把批改流程拆成能回退的步骤
python·agent
Patrick在香港12 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
2601_9679801112 小时前
Python 初学者必备的常用内置函数
python·编程语言·内置函数·初学者·常用函数
OnlineProxy12 小时前
移动应用数据爬取:通过模拟器与流量嗅探对 API 进行逆向工程
爬虫·python·httpx