Skip to content
Snippets Groups Projects
lib_era5_land_pixel.py 39.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    
    def extract_weather_dataframe(rain_path: str, ET0_path: str, shapefile: str, config_file: str, save_path: str) -> None:
        """
        Extract a weather dataframe for each variable (Rain, ET0) and merge them in one
        dataframe. This dataframe is saved as ``csv`` file.
    
        Arguments
        =========
    
    
        1. rain_path: ``str``
    
        2. ET0_path: ``str``
    
        3. shapefile: ``str``
    
        4. config_file: ``str``
    
        5. save_path: ``str``
    
            save path for weather dataframe
    
        Returns
        =======
    
        ``None``
        """
        
        # Generate arguments for multiprocessing
        args = [(rain_path, shapefile, config_file), (ET0_path, shapefile, config_file)]
        
        print('\nStarting weather data extraction on two cores..\n')
        
        # Extract weather values for both weather varialbes
        with Pool(2) as p:
    
        
        # Collect results in a single dataframe
        weather_dataframe = pd.DataFrame(results[0], columns = ['date', 'id', 'Rain', 'LC'])
        weather_dataframe['ET0'] = pd.DataFrame(results[1], columns = ['date', 'id', 'ET0', 'LC'])['ET0']
        
        # Reorder columns
        weather_dataframe = weather_dataframe.reindex(columns = ['date', 'id', 'Rain', 'ET0', 'LC'])
        
        # Format datatypes
        weather_dataframe['Rain'] = np.round(weather_dataframe['Rain']).astype(int)
        weather_dataframe['ET0'] = np.round(weather_dataframe['ET0']).astype(int)
        
        # Change date type
        weather_dataframe['date'] = pd.to_datetime(weather_dataframe['date'])
        
        # Save dataframe to csv
        weather_dataframe.to_csv(save_path, index = False)
        
        return None