public static Product createProduct6() {
try {
Product product = new Product("Test_Product_6_SceneRasterTransforms", "Test_Type_6_SceneRasterTransforms", 512, 512);
product.getMetadataRoot().addElement(new MetadataElement("Global_Attributes"));
product.getMetadataRoot().addElement(new MetadataElement("Local_Attributes"));
product.setModified(false);
final String a_expression = "sin(4 * PI * sqrt( sq(X/1000.0 - 1) + sq(Y/500.0 - 1) ))";
final Band band_a = new VirtualBand("Band_A", ProductData.TYPE_FLOAT32, 2048, 1024, a_expression);
final AffineTransform a_forward = new AffineTransform();
a_forward.scale(0.25, 0.5);
final AffineTransform a_inverse = a_forward.createInverse();
band_a.setModelToSceneTransform(new AffineTransform2D(a_forward));
band_a.setSceneToModelTransform(new AffineTransform2D(a_inverse));
product.addBand(band_a);
final String b_expression = "sin(4 * PI * sqrt( 2.0 * abs(X/1000.0 * Y/500.0) ))";
final VirtualBand band_b = new VirtualBand("Band_B", ProductData.TYPE_FLOAT32, 128, 256, b_expression);
final AffineTransform b_forward = new AffineTransform();
b_forward.scale(2.0, 2.0);
b_forward.translate(128, 0);
final AffineTransform b_inverse = b_forward.createInverse();
band_b.setModelToSceneTransform(new AffineTransform2D(b_forward));
band_b.setSceneToModelTransform(new AffineTransform2D(b_inverse));
band_b.setNoDataValue(Double.NaN);
band_b.setNoDataValueUsed(true);
product.addBand(band_b);
return product;
} catch (NoninvertibleTransformException e) {
return null;
}
}