docs: def GetRGB(self, scheme='infrared', names=None):
          """Get an RGB color scheme based on predefined presets or specify your
          own band names to use. A given set of names always overrides a scheme.
  
          Note:
              Available schemes are defined in ``RGB_SCHEMES`` and include:
  
              - ``true``
              - ``infrared``
              - ``false_a``
              - ``false_b``
              - ``false_c``
  
          """
          if names is not None:
              if not isinstance(names, (list, tuple)) or len(names) != 3:
                  raise RuntimeError('RGB band names improperly defined.')
          else:
              lookup = self.RGB_SCHEMES[scheme]
              names = lookup[self.global_metadata.satellite]
  
          # Now check that all bands are available:
          for nm in names:
              if nm not in self.bands.keys():
                  raise RuntimeError('Band (%s) unavailable.' % nm)
  
          # Get the RGB bands
          r = self.bands[names[0]].data
          g = self.bands[names[1]].data
          b = self.bands[names[2]].data
          # Note that the bands dhould already be masked from read.
          # If casted then there are np.nans present
          r = ((r - np.nanmin(r)) * (1/(np.nanmax(r) - np.nanmin(r)) * 255)).astype('uint8')
          g = ((g - np.nanmin(g)) * (1/(np.nanmax(g) - np.nanmin(g)) * 255)).astype('uint8')
          b = ((b - np.nanmin(b)) * (1/(np.nanmax(b) - np.nanmin(b)) * 255)).astype('uint8')
          return np.dstack([r, g, b])