Example #1
0
 for inRow in inCur:
   # load input geometry
   pt = inRow.getValue(inShpFld).getPart(0)
   id = inRow.getValue(ptsIDFld)
   coor = (pt.X, pt.Y)
   # load radius
   radius = math.sqrt(inRow.getValue(weightFld)) * normalization
   print inRow.getValue(weightFld), radius, normalization
   ptCount = max(int(pi2 * radius / tolerance), 3)
   delta = pi2 / ptCount
   angle = 0
   while angle < pi2:
     outRow = outCur.newRow()
     outRow.setValue(circShapeFld, arcpy.Point(coor[0] + radius * math.cos(angle), coor[1] + radius * math.sin(angle)))
     outRow.setValue(ptsIDFld, id)
     outCur.insertRow(outRow)
     angle += delta
   prog.move()
 del inCur, outCur, inRow, outRow
 prog.end()
 common.progress('building voronoi polygons')
 singlePolys = common.featurePath(location, TMP_ALLPOLY)
 mergedPolys = common.featurePath(location, outName)
 arcpy.CreateThiessenPolygons_analysis(circLayer, singlePolys, 'ALL')
 common.progress('dissolving to weighted polygons')
 arcpy.Dissolve_management(singlePolys, mergedPolys, ptsIDFld)
 common.progress('joining transfer fields')
 arcpy.JoinField_management(mergedPolys, ptsIDFld, points, ptsIDFld, transferFlds)
 common.progress('deleting temporary files')
 common.delete(singlePolys)
 
import arcpy, os, common, collections, loaders

OVERLAP_FLD = 'OVERLAP'
TMP_BORDS = 'tmp_borders'
PTOL_LEFT_FLD = 'LEFT_FID'
PTOL_RIGHT_FLD = 'RIGHT_FID'

with common.runtool(7) as parameters:
  regions, idFld, overlapTable, idFrom, idTo, overlapFld, outBorders = parameters
  common.progress('creating borders')
  tmpBords = common.featurePath(os.path.dirname(outBorders), TMP_BORDS)
  arcpy.PolygonToLine_management(regions, tmpBords, 'IDENTIFY_NEIGHBORS')
  # dissolve to remove line duplication on shared borders
  common.progress('removing border duplicates')
  arcpy.Dissolve_management(tmpBords, outBorders, [PTOL_LEFT_FLD, PTOL_RIGHT_FLD])
  common.progress('loading region identifiers')
  oidFld = arcpy.Describe(regions).OIDFieldName
  idReader = loaders.DictReader(regions, {'id' : idFld, 'fid' : oidFld})
  regions = idReader.read()
  regIDType = type(next(regions.itervalues()))
  common.progress('loading region overlap values')
  overlapReader = loaders.OverlapReader(overlapTable, {'from' : idFrom, 'to' : idTo, 'value' : overlapFld})
  overlaps = overlapReader.read()
  # remap to FIDs
  tofid = {}
  for id, valdict in overlaps.iteritems():
    fid = regions[id]['fid']
    tofid[fid] = {}
    for toid, toval in valdict.iteritems():
      tofid[fid][regions[toid]['fid']] = {'from' : id, 'to' : toid, 'value' : toval}
  common.progress('writing border effects')