///*
// * GeoTools - The Open Source Java GIS Toolkit
// * http://geotools.org
// *
// * (C) 2005-2008, Open Source Geospatial Foundation (OSGeo)
// *
// * This library is free software; you can redistribute it and/or
// * modify it under the terms of the GNU Lesser General Public
// * License as published by the Free Software Foundation;
// * version 2.1 of the License.
// *
// * This library is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// * Lesser General Public License for more details.
// */
//package org.geotools.gce.geotiff;
//
//import java.io.File;
//import java.io.IOException;
//import java.net.URL;
//import java.text.ParseException;
//import java.util.Collection;
//import java.util.Iterator;
//import java.util.LinkedHashSet;
//import java.util.List;
//import java.util.Set;
//import java.util.TreeSet;
//import java.util.logging.Logger;
//
//import javax.media.jai.JAI;
//import javax.media.jai.TileCache;
//
//import junit.framework.Test;
//import junit.framework.TestCase;
//import junit.framework.TestSuite;
//
//import org.geotools.coverage.grid.GridCoverage2D;
//import org.geotools.coverage.grid.io.imageio.IIOMetadataDumper;
//import org.geotools.coverage.grid.io.imageio.geotiff.GeoTiffIIOMetadataDecoder;
//import org.geotools.coverage.io.CoverageAccess;
//import org.geotools.coverage.io.CoverageReadRequest;
//import org.geotools.coverage.io.CoverageResponse;
//import org.geotools.coverage.io.CoverageSource;
//import org.geotools.coverage.io.CoverageAccess.AccessType;
//import org.geotools.coverage.io.CoverageResponse.Status;
//import org.geotools.coverage.io.geotiff.GeoTiffDriver;
//import org.geotools.coverage.io.geotiff.GeoTiffReader;
//import org.geotools.coverage.io.geotiff.GeoTiffWriter;
//import org.geotools.coverage.io.impl.BaseFileDriver;
//import org.geotools.coverage.io.impl.DefaultCoverageReadRequest;
//import org.geotools.coverage.io.impl.range.DefaultRangeType;
//import org.geotools.coverage.io.netcdf.NetCDFDriver;
//import org.geotools.coverage.io.range.FieldType;
//import org.geotools.coverage.io.range.RangeType;
//import org.geotools.test.TestData;
//import org.opengis.coverage.Coverage;
//import org.opengis.feature.type.Name;
//import org.opengis.geometry.BoundingBox;
//import org.opengis.geometry.Envelope;
//import org.opengis.referencing.FactoryException;
//import org.opengis.referencing.crs.CoordinateReferenceSystem;
//import org.opengis.referencing.operation.TransformException;
//import org.opengis.temporal.TemporalGeometricPrimitive;
//
///**
// * @author Simone Giannecchini
// *
// * @source $URL:
// * http://svn.geotools.org/geotools/trunk/gt/plugin/geotiff/test/org/geotools/gce/geotiff/GeoTiffVisualizationTest.java $
// */
//public class NetCDFToGeoTIFFTemporaryTest extends TestCase {
//
//// private final static String filePath = "C:/Work/data/rixen/lsvc08/";
////
//// private final static String subPath = "NRL/NCOM/20080929/";
////
// private final static String filePath = "E:/Work/data/prove/testWriter";
//
// private final static String subPath = "/";
//
// private final static String name = "converted_temp_m08_nest0_20080929.nc";
//
//// private final static String filePath = "C:/Work/data/netcdf";
////
//// private final static String subPath = "/";
////
//// private final static String name = "2008091700-0500.nc";
//
// private final static String fileName = filePath + subPath + name;
//
// private String writtenFile="";
//
// private static final Logger LOGGER = org.geotools.util.logging.Logging
// .getLogger(NetCDFToGeoTIFFTemporaryTest.class.toString());
//
// private static GeoTiffDriver factory;
//
// /**
// *
// */
// public NetCDFToGeoTIFFTemporaryTest() {
// this("Writer Test!");
// }
//
// public NetCDFToGeoTIFFTemporaryTest(String string) {
// super(string);
// }
//
// public static Test suite() {
// TestSuite suite = new TestSuite();
//
// // Test read exploiting common JAI operations (Crop-Translate-Rotate)
// suite.addTest(new NetCDFToGeoTIFFTemporaryTest("testWrite"));
//
//// suite.addTest(new NetCDFToGeoTIFFTemporaryTest("test2"));
//
//
// return suite;
// }
//
// public static void main(java.lang.String[] args) {
// junit.textui.TestRunner.run(suite());
// }
//
// /*
// * @see TestCase#setUp()
// */
// protected void setUp() throws Exception {
// super.setUp();
// final JAI jaiDef = JAI.getDefaultInstance();
//
// // using a big tile cache
// final TileCache cache = jaiDef.getTileCache();
// cache.setMemoryCapacity(64 * 1024 * 1024);
// cache.setMemoryThreshold(0.75f);
//
// factory = new GeoTiffDriver();
// }
//
//
// /**
// * Testing {@link GeoTiffWriter} capabilities to write a cropped coverage.
// *
// * @throws IllegalArgumentException
// * @throws IOException
// * @throws UnsupportedOperationException
// * @throws ParseException
// * @throws FactoryException
// * @throws TransformException
// */
// public void testWrite() throws IllegalArgumentException, IOException,
// UnsupportedOperationException, ParseException, FactoryException,
// TransformException {
// final File dir = new File("E:/work/data/prove");
// final StringBuffer buffer = new StringBuffer();
// writtenFile = new StringBuffer(dir.getAbsolutePath())
// .append("/testWriter/").toString();
// final File writedir = new File(writtenFile);
// writedir.mkdir();
//
// final BaseFileDriver driver = new NetCDFDriver();
// File file = new File(fileName);
// final URL source = file.toURI().toURL();
// if (driver.canConnect(source)) {
//
// // getting access to the file
// CoverageAccess access = driver.connect(source, null, null,
// null);
//
// if (access == null)
// throw new IOException("Unable to connect");
//
// // get the names
// List<Name> names = access.getNames(null);
// for (Name name : names) {
// // get a source
// CoverageSource gridSource = access.access(name, null,
// AccessType.READ_ONLY, null, null);
// if (gridSource == null)
// throw new IOException("Unable to access");
//
// Set<TemporalGeometricPrimitive> temporalDomain = gridSource
// .getTemporalDomain(null);
// List<BoundingBox> horizontalDomain = gridSource
// .getHorizontalDomain(false, null);
// Set<Envelope> verticalDomain = gridSource.getVerticalDomain(
// false, null);
// CoordinateReferenceSystem crs = gridSource
// .getCoordinateReferenceSystem(null);
//
// RangeType range = gridSource.getRangeType(null);
//
// CoverageReadRequest readRequest = new DefaultCoverageReadRequest();
// // //
// //
// // Setting up a limited range for the request.
// //
// // //
// final int numFieldTypes = range.getNumFieldTypes();
//
// Iterator<FieldType> ftIterator = range.getFieldTypes()
// .iterator();
// FieldType ft = null;
// while (ftIterator.hasNext()){
// ft = ftIterator.next();
// if (ft!=null){
// if (ft.getName().toString().contains("temp"))
// break;
// }
// }
//
// if (ft != null) {
// TreeSet<FieldType> fieldSet = new TreeSet<FieldType>();
// fieldSet.add(ft);
// RangeType rangeSubset = new DefaultRangeType(range
// .getName(), range.getDescription(), fieldSet);
// readRequest.setRangeSubset(rangeSubset);
// }
//
// LinkedHashSet<Envelope> requestedVerticalSubset = new LinkedHashSet<Envelope>();
// final Iterator<Envelope> iterator = verticalDomain.iterator();
// requestedVerticalSubset.add(iterator.next());
// final Iterator<TemporalGeometricPrimitive> timeIterator = temporalDomain.iterator();
//
// readRequest.setVerticalSubset(requestedVerticalSubset);
// TreeSet<TemporalGeometricPrimitive> requestedTemporalSubset = new TreeSet<TemporalGeometricPrimitive> ();
// requestedTemporalSubset.add(timeIterator.next());
// readRequest.setTemporalSubset(requestedTemporalSubset);
//
// CoverageResponse response = gridSource.read(readRequest, null);
// if (response == null || response.getStatus() != Status.SUCCESS
// || !response.getExceptions().isEmpty())
// throw new IOException("Unable to read");
//
// Collection<? extends Coverage> results = response
// .getResults(null);
// for (Coverage c : results) {
// GridCoverage2D coverage = (GridCoverage2D) c;
//
// // Crs and envelope
// if (TestData.isInteractiveTest()) {
// buffer.append("CRS: ").append(
// coverage.getCoordinateReferenceSystem2D()
// .toWKT()).append("\n");
// buffer.append("GG: ").append(
// coverage.getGridGeometry().toString()).append(
// "\n");
// }
// access.dispose();
//
// final File writeFile = new File(writedir, coverage
// .getName().toString()
// + ".tiff");
// GeoTiffWriter writer = new GeoTiffWriter(writeFile);
// writer.write(coverage, null);
// writer.dispose();
//
// GeoTiffReader reader = new GeoTiffReader(writeFile.toURI().toURL());
// GeoTiffIIOMetadataDecoder readMetadata = reader.getMetadata();
// if (readMetadata.hasNoData())
// System.out.println("NODATA IS: " + readMetadata.getNoData());
// }
//
// }
//
// } else
// buffer.append("NOT ACCEPTED").append("\n");
// if (TestData.isInteractiveTest())
// LOGGER.info(buffer.toString());
//
// }
//
// public void test2() throws IOException{
// writtenFile = "C:/work/data/prove/testWriter/gdal.tiff";
// File writeFile = new File(writtenFile);
// StringBuffer buffer = new StringBuffer("");
// GeoTiffReader reader = new GeoTiffReader(writeFile.toURI().toURL());
// reader.read(null);
// IIOMetadataDumper iIOMetadataDumper = new
// IIOMetadataDumper(
// ((GeoTiffReader) reader).getMetadata()
// .getRootNode());
// buffer.append("TIFF metadata: ").append(
// iIOMetadataDumper.getMetadata()).append("\n");
// LOGGER.info(buffer.toString());
// }
//}