code: func (s *Surface) UnmarshalJSON(data []byte) error {
  	surface := struct {
  		Bound  *Bound
  		Values [][]float64
  	}{}
  
  	err := json.Unmarshal(data, &surface)
  	if err != nil {
  		return err
  	}
  
  	// if len(points) > 2 {
  	// 	return errors.New("geo: too many points to unmarshal into bound")
  	// }
  
  	// if len(points) < 2 {
  	// 	return errors.New("geo: not enough points to unmarshal into bound")
  	// }
  
  	s.bound = surface.Bound
  	s.Grid = surface.Values
  
  	return nil
  }
docs: // UnmarshalJSON enables surfaces to be decoded as JSON using the encoding/json package.