def create_geotiff(w,h,newfieldminlat,newfieldmaxlat,newfieldminlong,newfieldmaxlong,f_name,f_tiff_name): from osgeo import gdal from osgeo import osr import numpy as np import os,sys import cv2 lat = [newfieldminlat, newfieldmaxlat] lon = [newfieldminlong, newfieldmaxlong] print(lat) print(lon) n_file = cv2.imread(f_name) orig_h,orig_w,orig_rgb = n_file.shape w,h = orig_h,orig_w image_size = (w,h) b_pixels,g_pixels,r_pixels = cv2.split(n_file) nx = image_size[0] ny = image_size[1] xmin,ymin,xmax,ymax = [newfieldminlong, newfieldminlat, newfieldmaxlong, newfieldmaxlat] xres = (float(xmax)-float(xmin))/float(nx) yres = (float(ymax)-float(ymin))/float(ny) xmin = float(xmin) ymin = float(ymin) xmax = float(xmax) ymax = float(ymax) xres = float(xres) yres = float(yres) print(xres) print(yres) geotransform = (xmin,xres,0,ymax,0,-yres) dst_ds = gdal.GetDriverByName('GTiff').Create(f_tiff_name,ny,nx,3,gdal.GDT_Byte) dst_ds.SetGeoTransform(geotransform) srs = osr.SpatialReference() srs.ImportFromEPSG(3857) dst_ds.SetProjection(srs.ExportToWkt()) dst_ds.GetRasterBand(1).WriteArray(r_pixels) dst_ds.GetRasterBand(2).WriteArray(g_pixels) dst_ds.GetRasterBand(3).WriteArray(b_pixels) dst_ds.FlushCache() dst_ds=None