/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2006-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.referencing.operation.transform;
// JUnit dependencies
import junit.framework.TestCase;
// OpenGIS dependencies
import org.opengis.parameter.ParameterValueGroup;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.MathTransformFactory;
import org.opengis.referencing.operation.TransformException;
import org.opengis.geometry.DirectPosition;
// Geotools dependencies
import org.geotools.referencing.ReferencingFactoryFinder;
import org.geotools.geometry.GeneralDirectPosition;
/**
* Tests the {@link EarthGravitationalModel} class.
*
* @since 2.3
* @source $URL$
* @version $Id$
* @author Martin Desruisseaux
*/
public class EarthGravitationalModelTest extends TestCase {
/**
* Tests the {@link EarthGravitationalModel#heightOffset} method for WGS 84.
*/
public void testHeightOffsetWGS84() throws Exception {
final EarthGravitationalModel gh = new EarthGravitationalModel();
gh.load("EGM180.nor");
assertEquals( 1.505, gh.heightOffset(45, 45, 0), 0.001);
assertEquals( 1.515, gh.heightOffset(45, 45, 1000), 0.001);
assertEquals(46.908, gh.heightOffset( 0, 45, 0), 0.001);
}
/**
* Tests the {@link EarthGravitationalModel#heightOffset} method for WGS 72.
*/
public void testHeightOffsetWGS72() throws Exception {
final EarthGravitationalModel gh = new EarthGravitationalModel(180, false);
gh.load("EGM180.nor");
assertEquals( 1.475, gh.heightOffset(45, 45, 0), 0.001);
assertEquals(46.879, gh.heightOffset( 0, 45, 0), 0.001);
assertEquals(23.324, gh.heightOffset( 3, 10, 10), 0.001);
assertEquals( 0.380, gh.heightOffset(75,-30, 0), 0.001);
}
/**
* Tests the creation of the math transform from the factory.
*/
public void testMathTransform() throws FactoryException, TransformException {
final MathTransformFactory mtFactory = ReferencingFactoryFinder.getMathTransformFactory(null);
final ParameterValueGroup p = mtFactory.getDefaultParameters("Earth gravitational model");
final MathTransform mt = mtFactory.createParameterizedTransform(p);
DirectPosition pos = new GeneralDirectPosition(new double[] {45, 45, 1000});
pos = mt.transform(pos, pos);
assertEquals( 45.000, pos.getOrdinate(0), 0.001);
assertEquals( 45.000, pos.getOrdinate(1), 0.001);
assertEquals(1001.515, pos.getOrdinate(2), 0.001);
}
}