Unless i missunderstand you this should work:
- Intersect Fishnet and contours
- Calculate a column of area-weighted values (value*shapearea)
- Dissolve by fishnet ID and sum the area-weighted values
- Calculate total averages by Dividing with shape areas
You can do this manually, with ModelBuilder or using the Python window and code below (change the four lines as indicated):
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)
Inputs:
Output: