ArcGIS字段计算器中的Python解析器,藏着4个“宝藏函数”——.conjugate()、.denominator()、.imag()、.numerator(),专门解决这类复杂运算难题,新手也能一看就会、一用就灵!
先搞懂核心:为什么这4个函数能解决你的痛点?
这4个函数均属于Python内置的数值处理函数,可直接在ArcGIS字段计算器中调用,无需额外导入库,适配所有ArcGIS版本(10.2及以上均支持),核心作用就是“简化复杂运算、批量处理数据”,避免手动操作的误差和低效。
重点提醒:这4个函数仅适用于「数值型字段」(短整型、长整型、浮点型、双精度型),文本型字段调用会报错,提前确认字段类型哦✅
一、.conjugate():复数的共轭运算,GIS复数处理必备
核心作用:返回复数的共轭复数,简单说就是“实部不变,虚部取反”。在GIS中,常用于复数像素值处理(如SAR遥感影像)、坐标复数运算等场景,是复数数据处理的基础函数之一。
共轭复数的数学逻辑:若复数为
,则其共轭复数为
(其中a为实部,b为虚部),.conjugate() 函数会自动完成这一运算。
语法格式(字段计算器中直接写)
适用于单个字段运算:!字段名!.conjugate()
适用于多字段组合运算:(!字段1! + !字段2!j).conjugate()(若虚部由另一个字段提供)
实操步骤(以SAR影像复数像素值处理为例)
1.打开ArcMap/ArcGIS Pro,加载需要处理的图层(如SAR遥感影像属性表);
2.右键点击图层→「打开属性表」→点击属性表顶部「表选项」→「添加字段」,新建一个双精度型字段(命名为“共轭复数”,用于存储运算结果);
3.右键点击新建的“共轭复数”字段→「字段计算器」,在弹出的对话框中,勾选「Python」解析器,取消勾选「显示代码块」(无需额外写代码);
4.在下方“表达式”框中输入:!复数字段!.conjugate()(将“复数字段”替换为你需要处理的复数字段名);
5.点击「确定」,等待1-3秒(根据数据量大小),即可批量生成所有复数的共轭值。
案例演示
现有SAR影像属性表中,“复数像素值”字段存储的数值为
、
、
,调用 !复数像素值!.conjugate() 后,运算结果分别为:
、
、
,完全符合共轭复数的数学逻辑,批量处理无误差。
二、.imag():提取复数的虚部,精准拆分复数成分
核心作用:返回复数的虚部(即复数中“j”前面的系数),忽略实部。在GIS中,常用于复数像素值拆分、地理信号处理等场景,比如提取遥感影像复数数据的虚部信息,用于后续波段运算。
补充说明:若字段中的数值为实数(无虚部),调用该函数后,返回结果为0.0(双精度型),不会报错。
语法格式
!字段名!.imag()
(无需额外参数,直接调用即可,字段必须为复数或可转换为复数的数值型字段)
实操步骤(以提取复数像素值虚部为例)
1.重复上述“添加字段”步骤,新建一个双精度型字段(命名为“虚部”);
2.右键点击“虚部”字段→「字段计算器」,勾选「Python」解析器,取消「显示代码块」;
3.表达式框输入:!复数像素值!.imag()(替换为你的字段名);
4.点击「确定」,批量提取所有复数的虚部,实数字段会自动返回0.0。
案例演示
字段“复数像素值”为
、
、
,调用 .imag() 后,结果分别为:3.0、0.0、-5.0,精准匹配虚部提取需求,无需手动拆分计算。
三、.numerator():提取分数/浮点数的分子,统计分析必备
核心作用:返回分数(或可转换为分数的浮点数)的分子,且分子与分母互质(即最大公约数为1)。在GIS中,常用于比例数据拆分,比如将“坡度比例”“覆盖率”等浮点数(如0.6=3/5)拆分为分子(3),便于后续统计汇总。
关键提醒:该函数仅适用于「可表示为分数的数值」(整数、有限小数均可),无限循环小数调用后会返回最接近的分数分子,不会报错但需注意精度误差。
语法格式
!字段名!.numerator()
实操步骤(以坡度比例拆分为例)
1.加载坡度数据图层,打开属性表,新建一个长整型字段(命名为“分子”,用于存储整数分子);
2.右键点击“分子”字段→「字段计算器」,勾选「Python」解析器;
3.表达式框输入:!坡度比例!.numerator()(假设“坡度比例”字段值为0.5、0.6、0.75等);
4.点击「确定」,完成分子批量提取。
案例演示
字段“坡度比例”值为:0.5(1/2)、0.6(3/5)、0.75(3/4)、2(2/1),调用 .numerator() 后,结果分别为:1、3、3、2,精准提取每一个数值对应的最简分子,完美适配统计分析需求。
四、.denominator():提取分数/浮点数的分母,与分子配套使用
核心作用:与.numerator() 配套使用,返回分数(或可转换为分数的浮点数)的分母,且分母为正整数、与分子互质。在GIS中,常用于比例数据的完整拆分,比如将覆盖率拆分为“分子/分母”形式,便于制作统计图表、对比分析。
补充说明:该函数与.numerator() 逻辑一致,整数会被视为“整数/1”,因此整数调用该函数会返回1。
语法格式
!字段名!.denominator()
实操步骤(与分子提取配套,以坡度比例拆分为例)
1.在属性表中,新建一个长整型字段(命名为“分母”);
2.右键点击“分母”字段→「字段计算器」,勾选「Python」解析器;
3.表达式框输入:!坡度比例!.denominator();
4.点击「确定」,批量提取分母,与之前提取的分子对应,完成比例拆分。
案例演示
沿用上述“坡度比例”字段,值为0.5、0.6、0.75、2,调用 .denominator() 后,结果分别为:2、5、4、1,与分子完美对应(1/2、3/5、3/4、2/1),直接用于后续统计分析,无需手动换算。
实战总结:4个函数适用场景汇总(快速查询)
为了方便大家快速调用,整理了4个函数的适用场景和核心要点,收藏起来,用到时直接查:
函数名称 | 核心作用 | 适用场景 | 注意事项 |
.conjugate() | 返回复数的共轭复数 | SAR影像复数处理、坐标复数运算 | 仅适用于复数字段 |
.imag() | 提取复数的虚部 | 复数像素值拆分、地理信号处理 | 实数字段返回0.0 |
.numerator() | 提取分数/浮点数的分子 | 比例数据拆分、统计汇总 | 返回最简分子,与分母互质 |
.denominator() | 提取分数/浮点数的分母 | 比例数据拆分、对比分析 | 分母为正整数,整数返回1 |