Exemplo n.º 1
0
 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: