Я работаю над сценарием, который перебирает записи «класса объектов A», выполняет пространственный выбор (отслеживание потока) для каждой отдельной записи «A» в «классе объектов B», а затем поле вычисляет атрибут из «A "в результирующих выбранных записях в" B "
В основном для каждого самого нижестоящего узла в сети канализационных трубопроводов проследить восходящий и назначить идентификатор этого нисходящего узла всем вышестоящим функциям.
Значение атрибута всегда будет целым числом, но иногда поле в A форматируется как текст, а иногда как число.
Я могу успешно выполнить это вычисление, если:
A отформатирован как TEXT
, а
B отформатирован как LONG
операция не может вычислить что-либо, если:
A отформатирован как LONG
, а
B отформатирован как LONG
Чего мне не хватает, чтобы это работало для обоих возможных вариантов вводаесли идентификатор для Aлибо текстовое целое число, либо целочисленное целое число?
...
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.