Easiest would be to use the ContourGenerator, the most important parameters there would be the contour interval and the surface tolerance. For that I'm going to copy&paste the help text, as I've always considered this a trial and error thing
This parameter is used to determine which input points to add to the surface model as vertices. Specifying a value of 0 turns off vertex filtering.
Tip: A larger value will speed up surface model construction. The larger the value, the more input points will be filtered out. For input files with millions – or even billions – of points, it becomes essential to increase this value.
When a positive value for surface tolerance is specified, it works as follows. For each vertex that is being added to the model:
If the x,y location is outside the 2D convex hull of the existing surface model, it is added to the model.
If the x,y location is inside the 2D convex hull of the existing surface model:
The difference between the z value from the existing surface model and the z value of the vertex is calculated.
This difference is compared to the surface model tolerance.
The vertex is only added to the surface model if the difference is greater than the surface tolerance; otherwise, the vertex is discarded.