Buildings Projected to Terrain - Lattice and ShrinkWrap - bypassing the terrain and deforming the roof
Unfortunately I couldn't download your file but here are some ideas.

Set the lattice so that is at the bottom of the buildings.



To prevent the deformation on top of the buildings generate a vertex group, and assign only the bottom vertices of your buildings to it.



Then use that vertex group for the lattice. That way only the vertices on the group will be affected by the modifier.