@Override public MathTransform getImageToMapTransform() { return new AffineTransform2D(affineTransform); }
@Override public ShapeFigure createPolygonFigure(Shape shape, FigureStyle style) { Geometry geometry = toJtsGeom.createPolygon(shape); try { geometry = sceneTransformProvider.getModelToSceneTransform().transform(geometry); } catch (TransformException e) { return null; } return createShapeFigure(geometry, style); }
private String getPixelString(RasterDataNode raster) { if (raster.getImageToModelTransform().equals(currentRaster.getImageToModelTransform()) && raster.getSceneToModelTransform().equals(currentRaster.getSceneToModelTransform())) { if (!pixelPosValidInRaster) { return RasterDataNode.INVALID_POS_TEXT; } return getPixelString(raster, pixelX, pixelY, rasterLevel); } final Point2D.Double scenePos = new Point2D.Double(sceneX, sceneY); Point2D.Double modelPos = new Point2D.Double(); try { raster.getSceneToModelTransform().transform(scenePos, modelPos); if (Double.isNaN(modelPos.getX()) || Double.isNaN(modelPos.getY())) { return PixelInfoViewModelUpdater.INVALID_POS_TEXT; } } catch (TransformException e) { return PixelInfoViewModelUpdater.INVALID_POS_TEXT; } final MultiLevelModel multiLevelModel = raster.getMultiLevelModel(); final int level = getLevel(multiLevelModel); final PixelPos rasterPos = (PixelPos) multiLevelModel.getModelToImageTransform(level).transform(modelPos, new PixelPos()); final int rasterX = floor(rasterPos.getX()); final int rasterY = floor(rasterPos.getY()); if (!coordinatesAreInRasterBounds(raster, rasterX, rasterY, level)) { return RasterDataNode.INVALID_POS_TEXT; } return getPixelString(raster, rasterX, rasterY, level); }
final Rectangle thisModelBounds = thisViewport.getViewToModelTransform().createTransformedShape(thisViewBounds).getBounds(); try { final Rectangle sceneBounds = thisRaster.getModelToSceneTransform().createTransformedShape(thisModelBounds).getBounds(); final Rectangle thatModelBounds = thatRaster.getSceneToModelTransform().createTransformedShape(sceneBounds).getBounds(); thatViewport.zoom(thatModelBounds); return true;
@Override public Shape getShape() { if (shape == null) { final Geometry featureGeometry = (Geometry) simpleFeature.getDefaultGeometry(); try { Geometry modelGeometry = sceneTransformProvider.getSceneToModelTransform().transform(featureGeometry); shape = new LiteShape2(modelGeometry, null, null, true); } catch (TransformException | FactoryException e) { //return empty shape for drawing return EMPTY_SHAPE; } } return shape; }
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; } }
boolean available; if (band.getImageToModelTransform().equals(currentRaster.getImageToModelTransform()) && band.getSceneToModelTransform().equals(currentRaster.getSceneToModelTransform())) { available = pixelPosValidInRaster; pixelValue = available ? ProductUtils.getGeophysicalSampleAsLong(band, pixelX, pixelY, rasterLevel) : 0; final Point2D modelPos; try { modelPos = band.getSceneToModelTransform().transform(scenePos, new Point2D.Double()); final MultiLevelModel multiLevelModel = band.getMultiLevelModel(); final int level = getLevel(multiLevelModel);
@Override public void setShape(Shape shape) { this.shape = shape; Geometry modelGeometry = getGeometryFromShape(shape); try { final Geometry sceneGeometry = sceneTransformProvider.getModelToSceneTransform().transform(modelGeometry); simpleFeature.setDefaultGeometry(sceneGeometry); fireFigureChanged(); } catch (TransformException e) { this.shape = null; } }
if (width != band.getRasterWidth()) { AffineTransform2D transform2D = new AffineTransform2D((float) width / band.getRasterWidth(), 0.0, 0.0, (float) height / band.getRasterHeight(), 0.0, 0.0); targetBand.setGeoCoding(addTiePointGridGeo(this.metadata, targetBand));
@Override public void setGeometry(Geometry geometry) { Point point = (Point) geometry; final Point2D.Double sceneCoords = new Point2D.Double(point.getX(), point.getY()); Point2D.Double modelCoords = new Point2D.Double(); Coordinate coordinate; try { sceneTransformProvider.getSceneToModelTransform().transform(sceneCoords, modelCoords); coordinate = new Coordinate(modelCoords.getX(), modelCoords.getY()); } catch (TransformException e) { coordinate = new Coordinate(Double.NaN, Double.NaN); } this.geometry = new Point(new CoordinateArraySequence(new Coordinate[]{coordinate}), point.getFactory()); }
new AffineTransform2D((float) sceneWidth / bandWidth, 0.0, 0.0, (float) sceneHeight / bandHeight, 0.0, 0.0); targetBand.setImageToModelTransform(transform2D);
@Override public ShapeFigure createLineFigure(Shape shape, FigureStyle style) { MultiLineString multiLineString = toJtsGeom.createMultiLineString(shape); Geometry geometry = multiLineString; if (multiLineString.getNumGeometries() == 1) { geometry = multiLineString.getGeometryN(0); } final Geometry geometryInSceneCoords; try { geometryInSceneCoords = sceneTransformProvider.getModelToSceneTransform().transform(geometry); } catch (TransformException e) { return null; } return createShapeFigure(geometryInSceneCoords, style); }
@Override public void setLocation(double x, double y) { Coordinate coordinate = geometry.getCoordinate(); coordinate.x = x; coordinate.y = y; final Point2D.Double modelCoords = new Point2D.Double(x, y); final Point2D.Double sceneCoords = new Point2D.Double(); try { sceneTransformProvider.getModelToSceneTransform().transform(modelCoords, sceneCoords); simpleFeature.setDefaultGeometry(new AwtGeomToJtsGeomConverter().createPoint(sceneCoords)); } catch (TransformException e) { coordinate.x = Double.NaN; coordinate.y = Double.NaN; } geometry.geometryChanged(); fireFigureChanged(); }
final Point2D.Double sceneCoords = new Point2D.Double(centroid.getX(), centroid.getY()); final Point2D.Double modelCoords = new Point2D.Double(); sceneTransformProvider.getSceneToModelTransform().transform(sceneCoords, modelCoords); if (i > 0) { rendering.getGraphics().draw(new Line2D.Double(lastX, lastY, centroid.getX(), centroid.getY()));
final Point2D modelCoords; try { modelCoords = band.getSceneToModelTransform().transform(sceneCoords, new Point2D.Double()); modelToImageTransform = band.getImageToModelTransform().createInverse(); } catch (NoninvertibleTransformException | TransformException e) { final Point2D modelCoords; try { modelCoords = grid.getSceneToModelTransform().transform(sceneCoords, new Point2D.Double()); modelToImageTransform = grid.getImageToModelTransform().createInverse(); } catch (NoninvertibleTransformException | TransformException e) {
private void insertPlacemark(ProductSceneView view) { Product product = view.getProduct(); final String[] uniqueNameAndLabel = PlacemarkNameFactory.createUniqueNameAndLabel(placemarkDescriptor, product); final String name = uniqueNameAndLabel[0]; final String label = uniqueNameAndLabel[1]; PixelPos rasterPos = new PixelPos(view.getCurrentPixelX() + 0.5f, view.getCurrentPixelY() + 0.5f); Point2D modelPos = view.getRaster().getImageToModelTransform().transform(rasterPos, new Point2D.Double()); Point2D scenePos = new Point2D.Double(); try { view.getRaster().getModelToSceneTransform().transform(modelPos, scenePos); final AffineTransform sceneToImage = Product.findImageToModelTransform(product.getSceneGeoCoding()).createInverse(); rasterPos = (PixelPos) sceneToImage.transform(modelPos, new PixelPos()); } catch (TransformException | NoninvertibleTransformException e) { Dialogs.showError("Could not place pin in image due to transformation exception: " + e.getMessage()); return; } final Placemark newPlacemark = Placemark.createPointPlacemark(placemarkDescriptor, name, label, "", rasterPos, null, product.getSceneGeoCoding()); PlacemarkGroup placemarkGroup = placemarkDescriptor.getPlacemarkGroup(product); String defaultStyleCss = placemarkGroup.getVectorDataNode().getDefaultStyleCss(); if(newPlacemark.getStyleCss().isEmpty()) { newPlacemark.setStyleCss(defaultStyleCss); } placemarkGroup.add(newPlacemark); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(UndoablePlacemarkActionFactory.createUndoablePlacemarkInsertion(product, newPlacemark, placemarkDescriptor)); } }
Point2D modelP = i2mTransform.transform(new Point2D.Double(pixelX + 0.5, pixelY + 0.5), null); try { final Point2D sceneP = currentView.getRaster().getModelToSceneTransform().transform(modelP, new Point2D.Double()); sceneX = sceneP.getX(); sceneY = sceneP.getY();