我有一个计算,它工作得很好,得到一个变量:
arcpy.management。CalculateField(sector_angle, 'Buffer', "getBuffer(!Area!)", "PYTHON3", f""" "def getBuffer(Area):如果区域< {median_area}:返回1 if区域> {median_area}:返回2""","TEXT", "NO_ENFORCE_DOMAINS")
我在同样的特征类上做了另一个计算,它不成立。
arcpy.management。CalculateField(sector_angle, 'Buffer_Radius', "setDistance(!Buffer!)", "PYTHON3", f"""def setDistance(Buffer): if Buffer == 1:返回{pnt[2]} elif Buffer == 2:返回{pnt[3]}""", "FLOAT")
一些关于变量外观的例子:
Pnt [2] = 2043.8900146484375
Pnt [3] = 4087.780029296875
这两个变量的类型都是float,但是生成的'Buffer_Radius'字段只包含NaN。
关于如何将变量放入代码块,我尝试了各种各样的方法,但是虽然在第一个函数中很容易,但在第二个函数中我就没有运气了。我如何得到我的变量到'Buffer_radius'字段?
感谢所有宝贵的意见和投入。最后,因为我在Python中拥有所有的逻辑,所以我最终使用了一个更新游标。时间方面,它几乎是相同的,如果我运行这两个CalculateField运行,稍慢…
我尝试了所有的事情,当然直接在ArcGIS Pro和我的代码块工作。然而,我认为@RogerDunnGIS谈论字段的格式有一个公平的观点。第一次运行CalculateField是创建缓冲区字段,作为'TEXT'!但是我的第二次CalculateField运行是在if语句中使用整数…
我还没有时间尝试,但1不应该是“1”,因此错误源再次在屏幕前约40厘米处发现。