/** Returns the parameters for this math transform. */ @Override public ParameterValueGroup getParameterValues() { return new ParameterGroup( getParameterDescriptors(), new ParameterValue[] {new Parameter(Provider.ORDER, nmax)}); }
/** * Creates a new instance of {@linkplain org.geotools.parameter.Parameter parameter value} * initialized with the {@linkplain #getDefaultValue default value}. The {@linkplain * org.geotools.parameter.Parameter#getDescriptor parameter value descriptor} for the created * parameter value will be {@code this} object. * * @return A parameter initialized to the default value. */ @SuppressWarnings("unchecked") public ParameterValue<T> createValue() { if (Double.class.equals(valueClass) && unit == null) { return (ParameterValue) new FloatParameter((ParameterDescriptor) this); } return new Parameter<T>(this); }
/** * Constructs a parameter from the specified name and value. This convenience constructor * creates a {@link DefaultParameterDescriptor} object. But if such an object is available, then * the preferred way to get a {@code ParameterValue} is to invoke {@link * ParameterDescriptor#createValue}. * * @param name The parameter name. * @param value The parameter value. * @return A new parameter instance for the given name and value. * @since 2.5 */ public static Parameter<Integer> create(final String name, final int value) { final ParameterDescriptor<Integer> descriptor = DefaultParameterDescriptor.create(name, 0, Integer.MIN_VALUE, Integer.MAX_VALUE); final Parameter<Integer> parameter = new Parameter<Integer>(descriptor); parameter.value = value; return parameter; }
/** * Constructs a parameter from the specified code list. This convenience constructor creates a * {@link DefaultParameterDescriptor} object. But if such an object is available, then the * preferred way to get a {@code ParameterValue} is to invoke {@link * ParameterDescriptor#createValue}. * * @param <T> The parameter type. * @param name The parameter name. * @param type The parameter type. * @param value The parameter value. * @return A new parameter instance for the given name and value. * @since 2.5 */ public static <T extends CodeList> Parameter<T> create( final String name, final Class<T> type, final T value) { final ParameterDescriptor<T> descriptor = DefaultParameterDescriptor.create(name, null, type, null, true); final Parameter<T> parameter = new Parameter<T>(descriptor); parameter.value = value; return parameter; }
/** * Returns the parameter values for this math transform. * * @return A copy of the parameter values for this math transform. */ @Override public ParameterValueGroup getParameterValues() { final ParameterValue<URI> file = new Parameter<URI>(Provider.FILE); file.setValue(grid); return new ParameterGroup(Provider.PARAMETERS, new ParameterValue[] {file}); }
/** * Returns the parameter values for this math transform. * * @return A copy of the parameter values for this math transform. */ @Override public ParameterValueGroup getParameterValues() { final ParameterValue lat_diff_file = new Parameter(Provider.LAT_DIFF_FILE); lat_diff_file.setValue(latGridName); final ParameterValue long_diff_file = new Parameter(Provider.LONG_DIFF_FILE); long_diff_file.setValue(longGridName); return new ParameterGroup( getParameterDescriptors(), new GeneralParameterValue[] {lat_diff_file, long_diff_file}); }
/** Returns the parameter values for this math transform. */ @Override public ParameterValueGroup getParameterValues() { if (warp instanceof WarpPolynomial) { final WarpPolynomial poly = (WarpPolynomial) warp; final ParameterValue[] p = new ParameterValue[7]; int c = 0; p[c++] = new Parameter( WarpTransform2DProvider.DEGREE, Integer.valueOf(poly.getDegree())); p[c++] = new Parameter(WarpTransform2DProvider.X_COEFFS, poly.getXCoeffs()); p[c++] = new Parameter(WarpTransform2DProvider.Y_COEFFS, poly.getYCoeffs()); float s; if ((s = poly.getPreScaleX()) != 1) p[c++] = new Parameter(WarpTransform2DProvider.PRE_SCALE_X, s); if ((s = poly.getPreScaleY()) != 1) p[c++] = new Parameter(WarpTransform2DProvider.PRE_SCALE_Y, s); if ((s = poly.getPostScaleX()) != 1) p[c++] = new Parameter(WarpTransform2DProvider.POST_SCALE_X, s); if ((s = poly.getPostScaleY()) != 1) p[c++] = new Parameter(WarpTransform2DProvider.POST_SCALE_Y, s); return new ParameterGroup(getParameterDescriptors(), XArray.resize(p, c)); } else { return super.getParameterValues(); } }
/** * Returns a clone of this parameter. Actually returns a different classes, since this parameter * is not really cloneable (it would requires a clone of {@link #parameters} first). */ @Override public Parameter<T> clone() { final Parameter<T> parameter = new Parameter<T>(getDescriptor()); parameter.setValue(getValue()); return parameter; } }
/** * Returns the parameter values using the specified descriptor. * * @param descriptor The parameter descriptor. * @return A copy of the parameter values for this math transform. */ private ParameterValueGroup getParameterValues(final ParameterDescriptorGroup descriptor) { final ParameterValue[] parameters = new ParameterValue[hasHeight ? 2 : 3]; int index = 0; if (!hasHeight) { final ParameterValue p = new org.geotools.parameter.Parameter(Provider.DIM); p.setValue(2); parameters[index++] = p; } parameters[index++] = new FloatParameter(Provider.SEMI_MAJOR, a); parameters[index++] = new FloatParameter(Provider.SEMI_MINOR, b); return new org.geotools.parameter.ParameterGroup(descriptor, parameters); }
/** * Constructs a parameter from the specified name and value. This convenience constructor * creates a {@link DefaultParameterDescriptor} object. But if such an object is available, then * the preferred way to get a {@code ParameterValue} is to invoke {@link * ParameterDescriptor#createValue}. * * @param name The parameter name. * @param value The parameter value. * @param unit The unit for the parameter value. * @return A new parameter instance for the given name and value. * @since 2.5 */ public static Parameter<Double> create(final String name, final double value, Unit<?> unit) { // Normalizes the specified unit into one of "standard" units used in projections. if (unit != null) { if (SI.METRE.isCompatible(unit)) unit = SI.METRE; else if (SI.DAY.isCompatible(unit)) unit = SI.DAY; else if (NonSI.DEGREE_ANGLE.isCompatible(unit)) unit = NonSI.DEGREE_ANGLE; } final ParameterDescriptor<Double> descriptor = DefaultParameterDescriptor.create( name, Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, unit); final Parameter<Double> parameter = new Parameter<Double>(descriptor); parameter.value = value; parameter.unit = unit; return parameter; }
private boolean renewCachedCoverage(DirectPosition centrePos) { final Rectangle queryRect = createQueryGridEnvelope(centrePos); if (queryRect.isEmpty()) { return false; } final GridCoverage2DReader reader = sourceRef.get(); GeneralParameterValue parameter = new Parameter( AbstractGridFormat.READ_GRIDGEOMETRY2D, new GridGeometry2D( new GridEnvelope2D(queryRect), reader.getOriginalGridToWorld(PixelInCell.CELL_CENTER), reader.getCoordinateReferenceSystem())); try { cachedCoverage = (GridCoverage2D) reader.read(new GeneralParameterValue[] {parameter}); return cachedCoverage != null; } catch (Exception ex) { throw new RuntimeException(ex); } }
@Test public void testZoomlevel3() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D( new GridEnvelope2D(new Rectangle(500, 500)), new ReferencedEnvelope(0, 90.0, -85.0, 0, MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0), 0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1), 0.01); assertEquals(15028131.25, gc.getEnvelope().getMaximum(0), 0.01); assertEquals(0, gc.getEnvelope().getMaximum(1), 0.01); assertEquals(768, img.getWidth()); assertEquals(1024, img.getHeight()); }
@Test public void testZoomlevel2() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D( new GridEnvelope2D(new Rectangle(500, 500)), new ReferencedEnvelope(0, 180.0, -85.0, 0, MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0), 0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1), 0.01); assertEquals(20037508.34, gc.getEnvelope().getMaximum(0), 0.01); assertEquals(0, gc.getEnvelope().getMaximum(1), 0.01); assertEquals(512, img.getWidth()); assertEquals(512, img.getHeight()); // ImageIO.write(img, "png", URLs.urlToFile(getClass().getResource("world_lakes.png"))); ImageAssert.assertEquals( URLs.urlToFile(getClass().getResource("world_lakes.png")), img, 250); }
@Test public void testZoomlevel4() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D( new GridEnvelope2D(new Rectangle(500, 500)), new ReferencedEnvelope(0, 45.0, -85.0, 0, MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0), 0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1), 0.01); assertEquals(7514065.62, gc.getEnvelope().getMaximum(0), 0.01); assertEquals(0, gc.getEnvelope().getMaximum(1), 0.01); assertEquals(768, img.getWidth()); assertEquals(2048, img.getHeight()); } }
/** * Returns the parameters for this math transform. */ @Override public ParameterValueGroup getParameterValues() { return new ParameterGroup(getParameterDescriptors(), new ParameterValue[] {new Parameter(Provider.ORDER, nmax)}); }
/** * Returns the parameters for this math transform. * * @return The parameters for this math transform. */ @Override public ParameterValueGroup getParameterValues() { final ParameterValue<Integer> dim = new Parameter<Integer>(Provider.DIM); dim.setValue(getSourceDimensions()); return new ParameterGroup( getParameterDescriptors(), new ParameterValue[] { dim, new FloatParameter(Provider.DX, dx), new FloatParameter(Provider.DY, dy), new FloatParameter(Provider.DZ, dz), new FloatParameter(Provider.SRC_SEMI_MAJOR, a), new FloatParameter(Provider.SRC_SEMI_MINOR, b), new FloatParameter(Provider.TGT_SEMI_MAJOR, a + da), new FloatParameter(Provider.TGT_SEMI_MINOR, b + db) }); }
v1 = new Parameter<Integer>(p1); v1.setValue(10); v2 = new Parameter<Integer>(p2); v2.setValue(20); v3 = new Parameter<Integer>(p3); v3.setValue(30); v4 = new Parameter<Integer>(p4); v4.setValue(40); v1b = new Parameter<Integer>(p1); v1b.setValue(-10); v2b = new Parameter<Integer>(p2); v2b.setValue(-20); v3b = new Parameter<Integer>(p3); v3b.setValue(-30); v4b = new Parameter<Integer>(p4); v4b.setValue(-40);
@Override public void encode(Object value, OutputStream os) throws IOException { Parameter<Boolean> forceSquareCells = new Parameter<Boolean>(ArcGridFormat.FORCE_CELLSIZE, Boolean.TRUE); new ArcGridFormat().getWriter(os).write((GridCoverage2D) value, new GeneralParameterValue[] {forceSquareCells}); }
public void testRangeIntegers() { Parameter<Integer> param; param = new Parameter(DefaultParameterDescriptor.create("Range", 15, -30, +40)); assertEquals("intValue", 15, param.intValue()); assertEquals("doubleValue", 15, param.doubleValue(), 0.0);
public void testRangeDoubles() { Parameter<Double> param; param = new Parameter(DefaultParameterDescriptor.create("Range", 15.0, -30.0, +40.0, null)); assertEquals("intValue", 15, param.intValue()); assertEquals("doubleValue", 15, param.doubleValue(), 0.0);