我正在研究一个脚本,该脚本遍历“功能类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”记录执行空间选择(流跟踪),然后执行字段...
问题似乎在于如何解析和执行选择查询。对于其中一种字段类型,它返回一个空选择,因此没有生成用于执行上游跟踪选择的跟踪标志。这将返回一个空的跟踪结果,因此没有记录可用于计算ID。
为源字段类型添加测试似乎已解决了该问题。