How do I create a STL file from a 2 dimensional grid of data
for that you can use openSCAD.
Data can be represented as a multi-array and we can iterate on it via for loop

// data structure is x,y,z where z is value 
arrayOfData=[[0,10,4],[0,21,9],[0,13,8],[0,41,2],[1,0,4],[2,0,180],[7,0,90]];    

for(a=[0:1:6])  translate([arrayOfData[a][0], arrayOfData[a][1],0])  cylinder(arrayOfData[a][2],2,.5,false);


And where you get the model it can be intersected with a cube to get the desired shape.