/**
*
*/
package org.geotools.coverage.io.range.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.measure.Measure;
import javax.measure.quantity.Dimensionless;
import javax.measure.unit.SI;
import javax.measure.unit.Unit;
import junit.framework.Assert;
import org.geotools.coverage.io.impl.range.CodeMeasure;
import org.geotools.coverage.io.impl.range.DefaultAxis;
import org.geotools.feature.NameImpl;
import org.geotools.referencing.crs.DefaultEngineeringCRS;
import org.geotools.referencing.cs.DefaultCoordinateSystemAxis;
import org.geotools.referencing.cs.DefaultLinearCS;
import org.geotools.referencing.datum.DefaultEngineeringDatum;
import org.geotools.util.SimpleInternationalString;
import org.junit.Test;
import org.opengis.referencing.crs.SingleCRS;
import org.opengis.referencing.cs.AxisDirection;
import org.opengis.referencing.cs.CoordinateSystemAxis;
import org.opengis.referencing.datum.EngineeringDatum;
import org.opengis.util.CodeList;
/**
* @author Simone Giannecchini, GeoSolutions
*
*
*
* @source $URL: http://svn.osgeo.org/geotools/trunk/modules/unsupported/coverage-experiment/coverage-api/src/test/java/org/geotools/coverage/io/range/impl/CodeMeasureTest.java $
*/
public class CodeMeasureTest extends Assert {
/** Bands captured as an codelist used as an example below */
private static List<Code> codes = new ArrayList<Code>();
static class Code extends CodeList<Code> {
private static final long serialVersionUID = -1103556579647561536L;
public Code(String name) {
super(name, codes );
}
public Code[] family() {
return codes.toArray(new Code[codes.size()]);
}
}
static {
new Code("BLUE");
new Code("GREEN");
new Code("RED");
new Code("NIR");
new Code("SWIT");
new Code("TIR");
new Code("SWR2");
}
/**
* This test uses use the default implementations
* to express 7 bands of a landsat image.
*/
@Test
public void testLandsatAxis(){
CoordinateSystemAxis csAxis = new DefaultCoordinateSystemAxis(
new SimpleInternationalString("light"),
"light",
AxisDirection.OTHER,
SI.MICRO(SI.METER));
DefaultLinearCS lightCS = new DefaultLinearCS("light",csAxis);
Map<String,Object> datumProperties = new HashMap<String,Object>();
datumProperties.put("name", "light");
EngineeringDatum lightDatum = new DefaultEngineeringDatum( datumProperties );
SingleCRS lightCRS = new DefaultEngineeringCRS("wave length", lightDatum, lightCS );
List<Measure<Code,Dimensionless>> keys = CodeMeasure.valueOf( codes );
DefaultAxis<Code,Dimensionless> axis =
new DefaultAxis<Code,Dimensionless>(
new NameImpl("Bands"),
new SimpleInternationalString("Expressed in wavelengths"),
keys,
Unit.ONE,
lightCRS );
assertEquals( lightCRS, axis.getCoordinateReferenceSystem() );
assertEquals( 7, axis.getKeys().size() );
}
}