I usually use a script in python to fix projections:
import rasterio
from rasterio.warp import calculate_default_transform, reproject, Resampling
input_dataset = "path/to/input/dataset.tiff"
output_dataset = "path/to/output/dataset.tiff"
output_projection = rasterio.crs.CRS.from_string('EPSG:3577')
def check_projection(input_dataset, output_dataset, output_projection):
with rasterio.open(input_dataset) as src:
if output_projection != src.crs:
transform, width, height = calculate_default_transform(
src.crs,
output_projection,
src.width,
src.height,
*src.bounds)
kwargs = src.meta.copy()
kwargs.update({'crs': output_projection, 'transform': transform, 'width': width, 'height': height})
with rasterio.open(output_dataset, 'w', **kwargs) as dst:
reproject(
source=rasterio.band(src, 1),
destination=rasterio.band(dst, 1),
src_transform=src.transform,
src_crs=src.crs,
dst_transform=transform,
dst_crs=output_projection,
resampling=Resampling.nearest)
return output_dataset