def getIntIDField(self, setID=False, unmapPrevious=False, progressor=None): if self.idFld is not None and self.idFld in common.fieldList(self.source, type=common.INT_FIELD_DESCRIBE): common.debug('integer field found') if progressor is not None: progressor.end() return self.idFld else: tmpFld = self.createTempIDFld(progressor) self.addSrcRemoveField(tmpFld) if setID: if unmapPrevious: self.removeMapField(self.idFld) self.addIDField(tmpFld, transfer=False, check=False) return tmpFld
for row in readCursor: fields = [] source = row.getValue(fromFld) target = row.getValue(toFld) mergeVals = [row.getValue(fld) for fld in mergeFlds] inter[(source, target)] = mergeVals reversed = (target, source) # if reversed in inter: # inter[(source, target)] = inter[reversed] # inter[reversed] = mergeVals # else: # inter[(source, target)] = mergeVals del readCursor, row common.progress('creating output fields') outFlds = [('M_' + fld)[:10] for fld in mergeFlds] existFlds = common.fieldList(interLayer) for i in range(len(outFlds)): if outFlds[i] in existFlds: common.warning('Field %s already exists, contents will be overwritten' % outFlds[i]) arcpy.DeleteField_management(interLayer, outFlds[i]) else: arcpy.AddField_management(interLayer, outFlds[i], common.fieldType(type(mergeVals[i]))) # uses mergeVals from previous cycle... dragons common.progress('writing output') writeCursor = arcpy.UpdateCursor(interLayer) for row in writeCursor: reversed = (row.getValue(toFld), row.getValue(fromFld)) if reversed in inter: values = inter[reversed] for i in range(len(values)): row.setValue(outFlds[i], values[i]) else: