Sim city uses a an XY grid, and the heights are discrete. In addition to this, the slopes seem to be limited to one "step" up or down.
So just handle all possible cases for a grid-cell.
Each cell has four corners: N0, N1, N2 and N3.
Let's designate the height at N0 as "nominal."
Then for each for the remaining corners (N1,N2,N3) there are three cases each:
- Nx is at same level as N0. (=)
- Nx is at lower level than N0 (-)
- Nx is at higher level than N0 (+)
So you need to handle all 3*3*3, or 27 cases.
I have drawn four of the 27 cases to give you an idea.
Is your game sprite-based? Then you need to draw all 27 sprites.
Is your game using 3D polygons? Then you only have to model a few of those, as many are variants of each other, under rotation.
Note that you need to offset each cell you draw with the absolute height of N0.
So to recap: Sim City defines the terrain heights at the corners of the cell, those heights are discrete, and neighbouring corners can only step +1, -1 or stay level.