<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)