def get_stereographic_array_descriptor(self): # projection for BEDMAP2 and other common Antarctic data sets projection = pyproj.Proj('+proj=stere +lat_ts=-71.0 +lat_0=-90 ' '+lon_0=0.0 +k_0=1.0 +x_0=0.0 +y_0=0.0 ' '+ellps=WGS84') # a square 61x61 cell map with 100 km resolution and xMax = 3000e3 res = 100e3 nx = 2*int(xMax/res)+1 x = numpy.linspace(-xMax, xMax, nx) descriptor = ProjectionGridDescriptor(projection) meshName = '{}km_Antarctic_stereo'.format(int(res*1e-3)) descriptor.create(x, x, meshName) return descriptor
def get_observation_descriptor(self, fileName): # {{{ ''' get a MeshDescriptor for the observation grid Parameters ---------- fileName : str observation file name describing the source grid Returns ------- obsDescriptor : ``MeshDescriptor`` The descriptor for the observation grid ''' # Authors # ------- # Xylar Asay-Davis # create a descriptor of the observation grid using the x/y polar # stereographic coordinates projection = get_antarctic_stereographic_projection() obsDescriptor = ProjectionGridDescriptor.read(projection, fileName=fileName, xVarName='x', yVarName='y') return obsDescriptor # }}}
def _get_antarctic_stereographic_comparison_descriptor(config): # {{{ """ Get a descriptor of an Antarctic steregraphic comparison grid, used for remapping and determining the grid name Parameters ---------- config : instance of ``MpasAnalysisConfigParser`` Contains configuration options Returns ------- descriptor : ``ProjectionGridDescriptor`` object A descriptor of the Antarctic comparison grid """ # Authors # ------- # Xylar Asay-Davis climSection = 'climatology' comparisonStereoWidth = config.getfloat(climSection, 'comparisonAntarcticStereoWidth') comparisonStereoResolution = config.getfloat( climSection, 'comparisonAntarcticStereoResolution') projection = get_antarctic_stereographic_projection() xMax = 0.5 * comparisonStereoWidth * 1e3 nx = int(comparisonStereoWidth / comparisonStereoResolution) + 1 x = numpy.linspace(-xMax, xMax, nx) meshName = '{}x{}km_{}km_Antarctic_stereo'.format( comparisonStereoWidth, comparisonStereoWidth, comparisonStereoResolution) descriptor = ProjectionGridDescriptor.create(projection, x, x, meshName) return descriptor # }}}
maskedMeltRate = numpy.ma.masked_array(ds.melt_actual, mask=(ds.melt_actual.values == 0.)) ds['meltRate'] = xarray.DataArray(maskedMeltRate, dims=ds.melt_actual.dims, coords=ds.melt_actual.coords, attrs=ds.melt_actual.attrs) ds = ds.drop('melt_actual') inGridName = '{}x{}km_1.0km_Antarctic_stereo'.format(lx, ly) projection = pyproj.Proj('+proj=stere +lat_ts=-71.0 +lat_0=-90 +lon_0=0.0 ' '+k_0=1.0 +x_0=0.0 +y_0=0.0 +ellps=WGS84') inDescriptor = ProjectionGridDescriptor(projection) inDescriptor.read(inFileName, xVarName='xaxis', yVarName='yaxis', meshName=inGridName) outDescriptor = get_Antarctic_stereographic_comparison_descriptor(config) outGridName = outDescriptor.meshName outFileName = 'Rignot_2013_melt_rates_{}.nc'.format(outGridName) mappingFileName = 'map_{}_to_{}.nc'.format(inGridName, outGridName) remapper = Remapper(inDescriptor, outDescriptor, mappingFileName)