class_docstr: A Surface represents a regularly sampled 2D grid with associated
  values defining the height along the z-axis. The key dimensions of
  a Surface represent the 2D coordinates along the x- and y-axes
  while the value dimension declares the height at each grid
  location.
  
  The data of a Surface is usually defined as a 2D array of values
  and either a bounds tuple defining the extent in the 2D space or
  explicit x- and y-coordinate arrays.
class_docstr_tok: ["A","Surface","represents","a","regularly","sampled","2D","grid","with","associated","values","defining","the","height","along","the","z-axis",".","The","key","dimensions","of","a","Surface","represent","the","2D","coordinates","along","the","x-","and","y-axes","while","the","value","dimension","declares","the","height","at","each","grid","location",".","The","data","of","a","Surface","is","usually","defined","as","a","2D","array","of","values","and","either","a","bounds","tuple","defining","the","extent","in","the","2D","space","or","explicit","x-","and","y-coordinate","arrays","."]
code: def __init__(
      self, data, kdims=None, vdims=None, extents=None, **params
  ):
      extents = (
          extents if extents else (None, None, None, None, None, None)
      )
      Image.__init__(
          self,
          data,
          kdims=kdims,
          vdims=vdims,
          extents=extents,
          **params,
      )
  
imports: import param
  from ..core import Dimension, Element3D
  from .geom import Points
  from .path import Path
  from .raster import Image
label_desc: Use image node_id 1 to create a new Surface object from inherited base classes: Image, Element3D with example: obj = Surface(data, kdims, vdims, extents)