try: from osgeo import gdal except: import gdal from osgeo import osr import numpy as np import os,sys import cv2 import csv import firebase_admin from firebase_admin import credentials from firebase_admin import db from firebase_admin import messaging import time import threading import os from numba import jit, cuda def make_geotiff(file_name,bounds): print('bounds') poly = bounds.get_polygon() lats = [] lngs = [] for single_point in poly: lats.append(single_point[1]) lngs.append(single_point[0]) cred = credentials.Certificate('servicekey.json') try: firebase_admin.initialize_app(cred, {'databaseURL': 'https://farmbase-b2f7e-31c0c.firebaseio.com/','storageBucket': 'farmbase-b2f7e.appspot.com'}) except: print('fire running') f_name= file_name f_tiff_name = f_name print(f_name) n_file = cv2.imread(f_name) orig_h,orig_w,orig_rgb = n_file.shape w_new = orig_w h_new = orig_h w = round(400*w_new/h_new) w_new = w h_new = 400 print('new_wh') print(w_new) print(h_new) n_file = cv2.resize(n_file,(w_new,h_new)) image_size = (w_new,h_new) newfieldminlat =min(lats) newfieldmaxlat =max(lats) newfieldminlong =min(lngs) newfieldmaxlong =max(lngs) lat = [newfieldminlat, newfieldmaxlat] lon = [newfieldminlong, newfieldmaxlong] b_pixels,g_pixels,r_pixels = cv2.split(n_file) nx = image_size[1] ny = image_size[0] xmin,ymin,xmax,ymax = [newfieldminlong, newfieldminlat, newfieldmaxlong, newfieldmaxlat] xres = (float(xmax)-float(xmin))/float(ny) yres = (float(ymax)-float(ymin))/float(nx) xmin = float(xmin) ymin = float(ymin) xmax = float(xmax) ymax = float(ymax) xres = float(xres) yres = float(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(4326) 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