private File localReproject(
      WcsReaderRequest request, File containingDirectory, String baseFilename)
      throws NoSuchAuthorityCodeException, FactoryException, IOException {
    InputStream input = null;
    File tmpFile = null;
    try {
      BoundWcsRequest geotiffRequest = request.bind(_wcsUrl).withFormat("geotiff");
      BoundWcsRequest requestNativeFormat =
          geotiffRequest.withCRS(geotiffRequest.getNativeCRSs().iterator().next());
      requestNativeFormat.assertLegalSize(_maxCoverageExtractionSize);

      input = requestNativeFormat.getCoverage();

      File file = null;
      file = new File(containingDirectory, baseFilename + "." + request.fileExtension());
      LOG.debug("Writing GridCoverage obtained from " + _wcsUrl + " to file " + file);

      tmpFile = File.createTempFile(baseFilename, ".tif");
      writeToFile(tmpFile, input);

      transformCoverage(tmpFile, file, request, requestNativeFormat, true);
      return file;
    } finally {
      if (tmpFile != null) FileUtils.delete(tmpFile);

      if (input != null) IOUtils.closeQuietly(input);
    }
  }
  /* ------------------- Support methods for readToFile ------------------- */
  private File remoteReproject(
      WcsReaderRequest request, File containingDirectory, String baseFilename)
      throws NoSuchAuthorityCodeException, FactoryException, IOException {
    InputStream input = null;
    try {
      BoundWcsRequest requestNegotiatedFormat = negotiateFormat(request.bind(_wcsUrl));
      BoundWcsRequest requestNegotiatedFormatCrs = negotiateRequestCRS(requestNegotiatedFormat);
      BoundWcsRequest requestNegotiatedFormatCrs2 =
          negotiateResponseCRS(requestNegotiatedFormatCrs);
      requestNegotiatedFormatCrs2.assertLegalSize(_maxCoverageExtractionSize);

      input = requestNegotiatedFormatCrs2.getCoverage();

      // file = new File (new File("/tmp/"),
      // baseFilename+"."+request.fileExtension());
      File file = null;
      file = new File(containingDirectory, baseFilename + "." + request.fileExtension());
      LOG.debug("Writing GridCoverage obtained from " + _wcsUrl + " to file " + file);

      convertFormat(baseFilename, input, file, request, requestNegotiatedFormatCrs2);

      transformCoverage(file, file, request, requestNegotiatedFormatCrs2, false);

      return file;
    } finally {
      if (input != null) IOUtils.closeQuietly(input);
    }
  }