def getCoverage(self, identifier=None, bbox=None, time=None, format = None,  subsets=None,crs=None, width=None, height=None, resx=None, resy=None, resz=None,parameter=None,method='<STR_LIT>',**kwargs):
if log.isEnabledFor(logging.DEBUG):<EOL><INDENT>log.debug('<STR_LIT>'%(identifier, bbox, time, format, crs, width, height, resx, resy, resz, parameter, method, str(kwargs)))<EOL><DEDENT>try:<EOL><INDENT>base_url = next((m.get('<STR_LIT:url>') for m in self.getOperationByName('<STR_LIT>').methods if m.get('<STR_LIT:type>').lower() == method.lower()))<EOL><DEDENT>except StopIteration:<EOL><INDENT>base_url = self.url<EOL><DEDENT>if log.isEnabledFor(logging.DEBUG):<EOL><INDENT>log.debug('<STR_LIT>'%base_url)<EOL><DEDENT>request = {'<STR_LIT:version>': self.version, '<STR_LIT>': '<STR_LIT>', '<STR_LIT>':'<STR_LIT>'}<EOL>assert len(identifier) > <NUM_LIT:0><EOL>request['<STR_LIT>']=identifier[<NUM_LIT:0>]<EOL>if crs:<EOL><INDENT>request['<STR_LIT>']=crs<EOL><DEDENT>request['<STR_LIT>']=format<EOL>if width:<EOL><INDENT>request['<STR_LIT:width>']=width<EOL><DEDENT>if height:<EOL><INDENT>request['<STR_LIT>']=height<EOL><DEDENT>if kwargs:<EOL><INDENT>for kw in kwargs:<EOL><INDENT>request[kw]=kwargs[kw]<EOL><DEDENT><DEDENT>data = urlencode(request)<EOL>if subsets:<EOL><INDENT>for subset in subsets:<EOL><INDENT>if len(subset) > <NUM_LIT:2>:<EOL><INDENT>if not self.is_number(subset[<NUM_LIT:1>]):<EOL><INDENT>data = data + "<STR_LIT:&>"+ urlencode({"<STR_LIT>":subset[<NUM_LIT:0>]+'<STR_LIT>'+self.__makeString(subset[<NUM_LIT:1>])+'<STR_LIT>'+self.__makeString(subset[<NUM_LIT:2>])+'<STR_LIT>'})<EOL><DEDENT>else:<EOL><INDENT>data = data + "<STR_LIT:&>"+ urlencode({"<STR_LIT>":subset[<NUM_LIT:0>]+'<STR_LIT:(>'+self.__makeString(subset[<NUM_LIT:1>])+'<STR_LIT:U+002C>'+self.__makeString(subset[<NUM_LIT:2>])+'<STR_LIT:)>'})<EOL><DEDENT><DEDENT>else:<EOL><INDENT>if not self.is_number(subset[<NUM_LIT:1>]):<EOL><INDENT>data = data + "<STR_LIT:&>"+ urlencode({"<STR_LIT>":subset[<NUM_LIT:0>]+'<STR_LIT>'+self.__makeString(subset[<NUM_LIT:1>])+'<STR_LIT>'})<EOL><DEDENT>else:<EOL><INDENT>data = data + "<STR_LIT:&>"+ urlencode({"<STR_LIT>":subset[<NUM_LIT:0>]+'<STR_LIT:(>'+self.__makeString(subset[<NUM_LIT:1>])+'<STR_LIT:)>'})<EOL><DEDENT><DEDENT><DEDENT><DEDENT>if log.isEnabledFor(logging.DEBUG):<EOL><INDENT>log.debug('<STR_LIT>'%data)<EOL><DEDENT>u=openURL(base_url, data, method, self.cookies)<EOL>return u<EOL>
Request and return a coverage from the WCS as a file-like object
        note: additional **kwargs helps with multi-version implementation
        core keyword arguments should be supported cross version
        example:
        cvg=wcs.getCoverage(identifier=['TuMYrRQ4'], timeSequence=['2792-06-01T00:00:00.0'], bbox=(-112,36,-106,41),format='cf-netcdf')

        is equivalent to:
        http://myhost/mywcs?SERVICE=WCS&REQUEST=GetCoverage&IDENTIFIER=TuMYrRQ4&VERSION=1.1.0&BOUNDINGBOX=-180,-90,180,90&TIME=2792-06-01T00:00:00.0&FORMAT=cf-netcdf

        example 2.0.1 URL
        http://earthserver.pml.ac.uk/rasdaman/ows?&SERVICE=WCS&VERSION=2.0.1&REQUEST=GetCoverage
        &COVERAGEID=V2_monthly_CCI_chlor_a_insitu_test&SUBSET=Lat(40,50)&SUBSET=Long(-10,0)&SUBSET=ansi(144883,145000)&FORMAT=application/netcdf

        cvg=wcs.getCoverage(identifier=['myID'], format='application/netcdf', subsets=[('axisName',min,max),('axisName',min,max),('axisName',min,max)])