Arcpy无法将字段源值计算为LONG字段

问题描述 投票:0回答:1

我正在研究一个脚本,该脚本遍历“功能类A”的记录,对“功能类B”上的每个“ A”记录执行空间选择(流跟踪),然后字段从“ A”中计算属性“放入” B“中的结果所选记录中]

基本上针对下水道网络上的每个最下游节点,跟踪上游并将该下游节点的ID分配给所有上游要素。

属性值将始终是整数,但是A中的字段有时设置为文本格式,有时设置为数字格式。

如果以下条件,我可以成功执行此计算:

A格式化为TEXT

B格式化为LONG

该操作在以下情况下无法计算任何内容:

A格式化为LONG

B格式化为LONG

我缺少什么,因此如果A的ID是文本整数或整数整数格式,这将对两种可能的输入情况都适用?] >>

...
for row in cursor:
ID = (str(row.getValue(str(flagname))))
whereclause = ((str(flagname)) +str(' = ') + "'%s'" %ID)
fc=str(r"outfalls_lyr")
arcpy.MakeFeatureLayer_management(traceflag, fc)

try:
    arcpy.SelectLayerByAttribute_management(fc, "NEW_SELECTION",str(whereclause))
    arcpy.MakeFeatureLayer_management( fc,r"in_memory\temp_of")
    arcpy.TraceGeometricNetwork_management(geomnet, r"in_memory\outNet",r"in_memory\temp_of" , "TRACE_UPSTREAM", "", "", "","", "", "NO_TRACE_ENDS", "NO_TRACE_INDETERMINATE_FLOW", "", "", "AS_IS", "", "", "", "AS_IS")
    for layer in arcpy.mapping.Layer(r"in_memory\outNet"):
        try:
            print arcpy.mapping.ListLayers(layer)
            calc = str('"%s"' %ID)
            arcpy.CalculateField_management (layer, fieldname, calc,"","")
        except:
            print arcpy.GetMessages()

except:
    print arcpy.GetMessages()

也交叉发布到GIS Stack Exchange。

[我正在研究一个脚本,该脚本遍历“功能类A”的记录,对“功能类B”上的每个单独的“ A”记录执行空间选择(流跟踪),然后执行字段...

python esri arcpy
1个回答
0
投票

问题似乎在于如何解析和执行选择查询。对于其中一种字段类型,它返回一个空选择,因此没有生成用于执行上游跟踪选择的跟踪标志。这将返回一个空的跟踪结果,因此没有记录可用于计算ID。

为源字段类型添加测试似乎已解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.