Source code for dnppy.convert.extract_GCMO_NetCDF

__all__ = ["extract_GCMO_NetCDF"]

# standard imports
import os
from dnppy import core

# arcpy imports
import arcpy
if arcpy.CheckExtension('Spatial')=='Available':
    arcpy.CheckOutExtension('Spatial')
    arcpy.env.overwriteOutput = True


def extract_GCMO_NetCDF(netcdf_list, variable, outdir):
[docs] """ Extracts all time layers from a "Global Climate Model Output" NetCDF layer :param netcdf_list: List of netcdfs from CORDEX climate distribution :param variable: The climate variable of interest (tsmax, tsmin, etc) :param outdir: Output directory to save files. :return output_filelist: returns list of files created by this function """ output_filelist = [] if not os.path.exists(outdir): os.makedirs(outdir) netcdf_list = core.enf_list(netcdf_list) for netcdf in netcdf_list: # get net cdf properties object props = arcpy.NetCDFFileProperties(netcdf) print("finding dimensions") dims = props.getDimensions() for dim in dims: print dim, props.getDimensionSize(dim) # make sure the variable is in this netcdf if variable: if not variable in props.getVariables(): print("Valid variables for this file include {0}".format(props.getVariables())) raise Exception("Variable '{0}' is not in this netcdf!".format(variable)) for dim in dims: if dim == "time": # set other dimensions x_dim = "lon" y_dim = "lat" band_dim = "" valueSelectionMethod = "BY_VALUE" size = props.getDimensionSize(dim) for i in range(size): # sanitize the dimname for invalid characters dimname = props.getDimensionValue(dim,i).replace(" 12:00:00 PM","") dimname = dimname.replace("/","-").replace(" ","_") dim_value = [["time", props.getDimensionValue(dim,i)]] print("extracting '{0}' from '{1}'".format(variable, dim_value)) outname = core.create_outname(outdir, netcdf, dimname, 'tif') output_filelist.append(outname) arcpy.MakeNetCDFRasterLayer_md(netcdf, variable, x_dim, y_dim, "temp", band_dim, dim_value, valueSelectionMethod) arcpy.CopyRaster_management("temp", outname, "", "", "", "NONE", "NONE", "") return output_filelist