docs: def merge_two(one, other, merge_strategy=MergeStrategy.UNION, silent=False, pixel_strategy=PixelStrategy.FIRST):
      # type: (GeoRaster2, GeoRaster2, MergeStrategy, bool, PixelStrategy) -> GeoRaster2
      """Merge two rasters into one.
  
      Parameters
      ----------
      one : GeoRaster2
          Left raster to merge.
      other : GeoRaster2
          Right raster to merge.
      merge_strategy : MergeStrategy, optional
          Merge strategy, from :py:data:`telluric.georaster.MergeStrategy` (default to "union").
      silent : bool, optional
          Whether to raise errors or return some result, default to False (raise errors).
      pixel_strategy: PixelStrategy, optional
          Pixel strategy, from :py:data:`telluric.georaster.PixelStrategy` (default to "top").
  
      Returns
      -------
      GeoRaster2
  
      """
      other_res = _prepare_other_raster(one, other)
      if other_res is None:
          if silent:
              return one
          else:
              raise ValueError("rasters do not intersect")
  
      else:
          other = other.copy_with(image=other_res.image, band_names=other_res.band_names)  # To make MyPy happy
  
      # Create a list of single band rasters
      # Cropping won't happen twice, since other was already cropped
      all_band_names, projected_rasters = _prepare_rasters([other], merge_strategy, first=one)
  
      if not all_band_names and not silent:
          raise ValueError("rasters have no bands in common, use another merge strategy")
  
      prepared_rasters = _apply_pixel_strategy(projected_rasters, pixel_strategy)
  
      prepared_rasters = _explode_rasters(prepared_rasters, all_band_names)
  
      # Merge common bands
      prepared_rasters = _merge_common_bands(_explode_raster(one, all_band_names) + prepared_rasters)
  
      # Merge all bands
      raster = reduce(_stack_bands, prepared_rasters)
  
      return one.copy_with(image=raster.image, band_names=raster.band_names)