/** * Computes the difference between the ellipsoid and geoid at a specified lat/lon using Geotools EarthGravitationalModel * * @param lat * @param lon * @return difference in meters * @throws FactoryException * @throws TransformException */ public static double computeEllipsoidToGeoidDifference(double lat, double lon) throws FactoryException, TransformException { // Set up a MathTransform based on the EarthGravitationalModel EarthGravitationalModel.Provider provider = new EarthGravitationalModel.Provider(); DefaultMathTransformFactory factory = new DefaultMathTransformFactory(); MathTransform mt = factory.createParameterizedTransform(provider.getParameters().createValue()); // Compute the offset DirectPosition3D dest = new DirectPosition3D(); mt.transform(new DirectPosition3D(lon, lat, 0), dest); return dest.z; } }
/** Returns an initially empty set of parameters. */ public ParameterValueGroup getParameters() { return descriptor.createValue(); }
/** Constructs a new map projection with default parameter values. */ protected NewZealandMapGrid() { this(Provider.PARAMETERS.createValue()); }
/** * Returns the matrix elements as a group of parameters values. The number of parameters depends * on the matrix size. Only matrix elements different from their default value will be included * in this group. * * @param matrix The matrix to returns as a group of parameters. * @return A copy of the parameter values for this math transform. */ static ParameterValueGroup getParameterValues(final Matrix matrix) { final MatrixParameters values; values = (MatrixParameters) ProviderAffine.PARAMETERS.createValue(); values.setMatrix(matrix); return values; }
/** * Copies parameter values from the specified {@link ParameterValueGroup} to the {@link * ParameterBlockJAI}, except the sources. * * <p><b>Note:</b> it would be possible to use {@link ImagingParameters#parameters} directly in * some occasions. However, we perform an unconditional copy instead because some operations may * change the values. * * @param parameters The {@link ParameterValueGroup} to be copied. * @return A copy of the provided {@link ParameterValueGroup} as a JAI block. * @since 2.4 */ protected ParameterBlockJAI prepareParameters(final ParameterValueGroup parameters) { final ImagingParameters copy = (ImagingParameters) descriptor.createValue(); final ParameterBlockJAI block = (ParameterBlockJAI) copy.parameters; org.geotools.parameter.Parameters.copy(parameters, copy); handleJAIEXTParams(block, parameters); return block; }
/** * Returns the default parameter values for a math transform using the given method. The method * argument is the name of any operation method returned by the {@link #getAvailableMethods} * method. A typical example is <code> * "<A HREF="http://www.remotesensing.org/geotiff/proj_list/transverse_mercator.html">Transverse_Mercator</A>" * </code>). * * <p>This method creates new parameter instances at every call. It is intented to be modified * by the user before to be passed to <code>{@linkplain #createParameterizedTransform * createParameterizedTransform}(parameters)</code>. * * @param method The case insensitive name of the method to search for. * @return The default parameter values. * @throws NoSuchIdentifierException if there is no transform registered for the specified * method. * @see #getAvailableMethods * @see #createParameterizedTransform * @see org.geotools.referencing.operation.transform.AbstractMathTransform#getParameterValues */ public ParameterValueGroup getDefaultParameters(final String method) throws NoSuchIdentifierException { return getProvider(method).getParameters().createValue(); }
final ParameterValueGroup copy = parameters.createValue(); copy(values, copy); return copy;
Errors.format(ErrorKeys.TOO_MANY_OCCURENCES_$2, name, count), name); final ParameterValueGroup value = ((ParameterDescriptorGroup) check).createValue(); values.add(value); return value;
/** * Override to discard ESRI extra parameters, they are adding un-welcomed shift in the * reprojection results */ @Override public ParameterValueGroup getParameterValues() { final ParameterDescriptorGroup descriptor = BASE_PARAMETERS; final Collection<GeneralParameterDescriptor> expected = descriptor.descriptors(); final ParameterValueGroup values = descriptor.createValue(); set(expected, AbstractProvider.SEMI_MAJOR, values, semiMajor); set(expected, AbstractProvider.SEMI_MINOR, values, semiMinor); set(expected, AbstractProvider.CENTRAL_MERIDIAN, values, centralMeridian); set(expected, AbstractProvider.LATITUDE_OF_ORIGIN, values, latitudeOfOrigin); set(expected, AbstractProvider.SCALE_FACTOR, values, scaleFactor); set(expected, AbstractProvider.FALSE_EASTING, values, falseEasting); set(expected, AbstractProvider.FALSE_NORTHING, values, falseNorthing); if (!Double.isNaN(standardParallel)) { set(expected, AbstractProvider.STANDARD_PARALLEL_1, values, standardParallel); } return values; }
/** * Returns an initially empty set of parameters. */ public ParameterValueGroup getParameters() { return descriptor.createValue(); }
/** * Returns the parameter values. */ @Override public ParameterValueGroup getParameterValues() { return PARAMETERS.createValue(); }
/** * Returns the parameter values. */ @Override public ParameterValueGroup getParameterValues() { return PARAMETERS.createValue(); }
/** * Returns the parameter values for this map projection. * * @return A copy of the parameter values for this map projection. */ @Override public ParameterValueGroup getParameterValues() { final ParameterDescriptorGroup descriptor = getParameterDescriptors(); final Collection<GeneralParameterDescriptor> expected = descriptor.descriptors(); final ParameterValueGroup values = descriptor.createValue(); set(expected, AbstractProvider.SEMI_MAJOR, values, semiMajor); set(expected, AbstractProvider.SEMI_MINOR, values, semiMinor); set(expected, AbstractProvider.CENTRAL_MERIDIAN, values, centralMeridian); set(expected, AbstractProvider.LATITUDE_OF_ORIGIN, values, latitudeOfOrigin); set(expected, AbstractProvider.SCALE_FACTOR, values, scaleFactor); set(expected, AbstractProvider.FALSE_EASTING, values, falseEasting); set(expected, AbstractProvider.FALSE_NORTHING, values, falseNorthing); return values; }
@Test public void testMathTransformUsesSphericalParameter() throws Exception { Mollweide.MollweideProvider mollweideProvider = new Mollweide.MollweideProvider(); ParameterValueGroup parameters = Mollweide.MollweideProvider.PARAMETERS.createValue(); parameters.parameter(SEMI_MAJOR).setValue(6000); parameters.parameter(SEMI_MINOR).setValue(100); MathTransform mathTransform = mollweideProvider.createMathTransform(parameters); String wkt = mathTransform.toWKT(); Assert.assertTrue(wkt.contains("\"semi_major\", 6000.0")); Assert.assertTrue( "Mollweide is only spherically defined. Axis must be equal", wkt.contains("\"semi_minor\", 6000.0")); } }
final ImagingParameters copy = (ImagingParameters) descriptor.createValue(); final ParameterBlockJAI block = (ParameterBlockJAI) copy.parameters; try {
final ImagingParameters copy = (ImagingParameters) descriptor.createValue(); org.geotools.parameter.Parameters.copy(parameters, copy); final ParameterBlockJAI block = (ParameterBlockJAI) copy.parameters;
AffineTransform2D crsToGRID) throws MismatchedDimensionException, ParameterNotFoundException, TransformException { final ImagingParameters copy = (ImagingParameters) descriptor.createValue(); final ParameterBlockJAI block = (ParameterBlockJAI) copy.parameters;
final ImagingParameters copy = (ImagingParameters) descriptor.createValue(); final ParameterBlockJAI block = (ParameterBlockJAI) copy.parameters;
/** * Returns the parameter values for this math transform. */ @Override public ParameterValueGroup getParameterValues() { final ParameterValueGroup p = getParameterDescriptors().createValue(); p.parameter("values").setValue(values); return p; }
/** * Returns a copy of the parameter values for this parameterized object. */ @Override public ParameterValueGroup getParameterValues() { final ParameterValueGroup pg = getParameterDescriptors().createValue(); pg.parameter("srcdefn").setValue(source.getCode().trim()); pg.parameter("dstdefn").setValue(target.getCode().trim()); return pg; }