A menos que te entienda mal, esto debería funcionar:
- Intersect Malla y contornos
- Calcular una columna de valores ponderados por área
- Disolver por ID de red de pesca y sumar los valores ponderados por área
- Calcule los promedios totales dividiendo con las áreas de las formas
Puede hacerlo manualmente, con el ModelBuilder o utilizando el Ventana Python y el código de abajo (cambiar las cuatro líneas como se indica):
import arcpy
arcpy.env.overwriteOutput=1
fishnet = r'C:\Default.gdb\fishnet_4km' #Change to match your data
contours = r'C:\Default.gdb\contour' #Change to match your data
valuecolumn = 'AvgValue' #Change to match your data
outfc = r'C:\Default.gdb\fishnet_with_averages' #Change to match your data
#Intersect fishnet and contours
tempfc=r'in_memory\intersect'
arcpy.Intersect_analysis(in_features=[fishnet,contours], out_feature_class=tempfc)
#Calculate areaweighted values per intersection
arcpy.AddField_management(in_table=tempfc, field_name='AvgArea', field_type='DOUBLE')
with arcpy.da.UpdateCursor(tempfc,['AvgArea',valuecolumn,'SHAPE@AREA']) as cursor:
for row in cursor:
row[0]=row[1]*row[2]
cursor.updateRow(row)
#Dissolve by fishnet ID and calculate sum of areasums
fishnetID = '{0}{1}'.format('FID_',arcpy.Describe(fishnet).name)
arcpy.Dissolve_management(in_features=tempfc, out_feature_class=outfc,
dissolve_field=fishnetID,
statistics_fields=[['AvgArea','SUM']])
arcpy.AddField_management(in_table=outfc, field_name='Areaweighted_average', field_type='DOUBLE')
#Calculate areaweighted average
with arcpy.da.UpdateCursor(outfc,['Areaweighted_average','SUM_AvgArea','SHAPE@AREA']) as cursor:
for row in cursor:
row[0]=row[1]/row[2]
cursor.updateRow(row)
Entradas: La salida: