User42 Posted January 11 Report Share Posted January 11 As seen in the attached image. Used GPT4 to hopefully correct the file O4_Imagery_Utils adding the following; ############################################################################################################################### # Additional logic for identifying and redownloading white areas missing_areas = identify_white_boxes(big_image) for area in missing_areas: new_area = attempt_redownload(area) if new_area: merge_areas(big_image, new_area, area) # Rest of your existing saving logic # ...# Additional functions like identify_white_boxes, download_specific_area, is_valid, merge_areas# would need to be implemented. ############################################################################################################################### def build_jpeg_ortho(tile, til_x_left,til_y_top,zoomlevel,provider_code,out_file_name=''): texture_attributes=(til_x_left,til_y_top,zoomlevel,provider_code) if provider_code in local_combined_providers_dict: data_found=False for rlayer in local_combined_providers_dict[provider_code]: (y0,x0)=GEO.gtile_to_wgs84(til_x_left,til_y_top,zoomlevel) (y1,x1)=GEO.gtile_to_wgs84(til_x_left+16,til_y_top+16,zoomlevel) if len(local_combined_providers_dict[provider_code])==1 or has_data((x0,y0,x1,y1),rlayer['extent_code'],is_mask_layer= (tile.lat,tile.lon, tile.mask_zl) if rlayer['priority']=='mask' else False): data_found=True true_til_x_left=til_x_left true_til_y_top=til_y_top true_zl=zoomlevel if 'max_zl' in providers_dict[rlayer['layer_code']]: max_zl=int(providers_dict[rlayer['layer_code']]['max_zl']) if max_zl<zoomlevel: (latmed,lonmed)=GEO.gtile_to_wgs84(til_x_left+8,til_y_top+8,zoomlevel) (true_til_x_left,true_til_y_top)=GEO.wgs84_to_orthogrid(latmed,lonmed,max_zl) true_zl=max_zl true_texture_attributes=(true_til_x_left,true_til_y_top,true_zl,rlayer['layer_code']) true_file_name=FNAMES.jpeg_file_name_from_attributes(true_til_x_left, true_til_y_top, true_zl,rlayer['layer_code']) true_file_dir=FNAMES.jpeg_file_dir_from_attributes(tile.lat, tile.lon,true_zl,providers_dict[rlayer['layer_code']]) if not os.path.isfile(os.path.join(true_file_dir,true_file_name)): UI.vprint(1," Downloading missing orthophoto "+true_file_name+" (for combining in "+provider_code+")") if not download_jpeg_ortho(true_file_dir,true_file_name,*true_texture_attributes): return 0 else: UI.vprint(1," The orthophoto "+true_file_name+" (for combining in "+provider_code+") is already present.") if not data_found: UI.lvprint(1," -> !!! Warning : No data found for building the combined texture", FNAMES.dds_file_name_from_attributes(*texture_attributes)," !!!") return 0 if out_file_name: big_img=combine_textures(tile,til_x_left,til_y_top,zoomlevel,provider_code) big_img.convert('RGB').save(out_file_name) elif provider_code in providers_dict: # In case one would like to save combined orthos as jpegs (this can be useful to use different masks parameters for imagery masks layers and actual masks file_name=FNAMES.jpeg_file_name_from_attributes(til_x_left, til_y_top, zoomlevel,provider_code) file_dir=FNAMES.jpeg_file_dir_from_attributes(tile.lat, tile.lon,zoomlevel,providers_dict[provider_code]) big_img=combine_textures(tile,til_x_left,til_y_top,zoomlevel,provider_code) if not os.path.exists(file_dir): os.makedirs(file_dir) try: big_img.convert('RGB').save(os.path.join(file_dir,file_name)) except Exception as e: UI.lvprint(0,"OS Error : could not save orthophoto on disk, received message :",e) return 0 elif provider_code in providers_dict: file_name=FNAMES.jpeg_file_name_from_attributes(til_x_left, til_y_top, zoomlevel,provider_code) file_dir=FNAMES.jpeg_file_dir_from_attributes(tile.lat, tile.lon,zoomlevel,providers_dict[provider_code]) if not os.path.isfile(os.path.join(file_dir,file_name)): UI.vprint(1," Downloading missing orthophoto "+file_name) if not download_jpeg_ortho(file_dir,file_name,*texture_attributes): return 0 else: UI.vprint(1," The orthophoto "+file_name+" is already present.") else: (tlat,tlon)=GEO.gtile_to_wgs84(til_x_left+8,til_y_top+8,zoomlevel) UI.vprint(1," Unknown provider",provider_code,"or it has no data around",tlat,tlon,".") return 0 return 1 Seems to work thus far but I'm shooting in the dark essentially, I'm not a coder, just a hobbyist. Maybe someone could review and let me know if I'm heading in the right direction? O4_Imagery_Utils.py Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.