private int determineResolutionFromProduct(Product product) { final RasterDataNode node = getAnyRasterDataNode(product); if (node != null) { return (int) node.getImageToModelTransform().getScaleX(); } return 1; } }
private int determineResolutionFromProduct(Product product) { final RasterDataNode node = getAnyRasterDataNode(product); if (node != null) { return (int) node.getImageToModelTransform().getScaleX(); } return 1; }
private boolean allOffsetsAreEqual(ProductNodeGroup productNodeGroup, double xOffset, double yOffset) { for (int i = 0; i < productNodeGroup.getNodeCount(); i++) { final double nodeXOffset = ((RasterDataNode) productNodeGroup.get(i)).getImageToModelTransform().getTranslateX(); final double nodeYOffset = ((RasterDataNode) productNodeGroup.get(i)).getImageToModelTransform().getTranslateY(); if (Math.abs(nodeXOffset - xOffset) > 1e-8 || Math.abs(nodeYOffset - yOffset) > 1e-8) { return false; } } return true; }
private boolean allOffsetsAreEqual(ProductNodeGroup productNodeGroup, double xOffset, double yOffset) { for (int i = 0; i < productNodeGroup.getNodeCount(); i++) { final double nodeXOffset = ((RasterDataNode) productNodeGroup.get(i)).getImageToModelTransform().getTranslateX(); final double nodeYOffset = ((RasterDataNode) productNodeGroup.get(i)).getImageToModelTransform().getTranslateY(); if (Math.abs(nodeXOffset - xOffset) > 1e-8 || Math.abs(nodeYOffset - yOffset) > 1e-8) { return false; } } return true; }
private void updateTargetResolutionTargetWidthAndHeight() { final Product selectedProduct = ioParametersPanel.getSourceProductSelectorList().get(0).getSelectedProduct(); final RasterDataNode node = getAnyRasterDataNode(selectedProduct); int targetWidth = 0; int targetHeight = 0; if (node != null) { final int resolution = Integer.parseInt(resolutionSpinner.getValue().toString()); final double nodeResolution = node.getImageToModelTransform().getScaleX(); targetWidth = (int) (node.getRasterWidth() * (nodeResolution / resolution)); targetHeight = (int) (node.getRasterHeight() * (nodeResolution / resolution)); } targetResolutionTargetWidthLabel.setText("" + targetWidth); targetResolutionTargetHeightLabel.setText("" + targetHeight); }
private void updateTargetResolutionTargetWidthAndHeight() { if (hasSourceProducts()) { final Product selectedProduct = sourceProducts[0]; final RasterDataNode node = getAnyRasterDataNode(selectedProduct); int targetWidth = 0; int targetHeight = 0; if (node != null) { final int resolution = Integer.parseInt(resolutionSpinner.getValue().toString()); final double nodeResolution = node.getImageToModelTransform().getScaleX(); targetWidth = (int) (node.getRasterWidth() * (nodeResolution / resolution)); targetHeight = (int) (node.getRasterHeight() * (nodeResolution / resolution)); } targetResolutionTargetWidthLabel.setText("" + targetWidth); targetResolutionTargetHeightLabel.setText("" + targetHeight); } }
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); }
private void deriveRasterPropertiesFromExpression(String expression, Product product) { if (product != null) { try { final RasterDataNode[] refRasters = BandArithmetic.getRefRasters(expression, product); if (refRasters.length > 0) { setGeoCoding(refRasters[0].getGeoCoding()); setImageToModelTransform(refRasters[0].getImageToModelTransform()); setSceneToModelTransform(refRasters[0].getSceneToModelTransform()); setModelToSceneTransform(refRasters[0].getModelToSceneTransform()); } } catch (ParseException e) { // do not set geocoding then } } }
private void snapToSelectedPin() { final Placemark pin = currentView != null ? currentView.getSelectedPin() : null; if (pin != null) { //todo [multisize_products] replace this very ugly code by using the scene raster transformer - tf 20151113 PixelPos rasterPos = new PixelPos(); final Point pinSceneCoords = (Point) pin.getFeature().getDefaultGeometry(); final Point2D.Double pinSceneCoordsDouble = new Point2D.Double(pinSceneCoords.getX(), pinSceneCoords.getY()); try { currentView.getRaster().getImageToModelTransform().createInverse().transform(pinSceneCoordsDouble, rasterPos); } catch (NoninvertibleTransformException e) { rasterPos = pin.getPixelPos(); } final int x = MathUtils.floorInt(rasterPos.x); final int y = MathUtils.floorInt(rasterPos.y); pixelInfoView.updatePixelValues(currentView, x, y, 0, true); } else { pixelInfoView.updatePixelValues(currentView, -1, -1, 0, false); } }
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)); } }
long pixelValue; boolean available; if (band.getImageToModelTransform().equals(currentRaster.getImageToModelTransform()) && band.getSceneToModelTransform().equals(currentRaster.getSceneToModelTransform())) { available = pixelPosValidInRaster;
final float wavelength = spectralBand.getSpectralWavelength(); final AffineTransform i2m = spectralBand.getImageToModelTransform(); if (i2m.equals(currentView.getRaster().getImageToModelTransform())) { if (pixelPosInRasterBounds && isPixelValid(spectralBand, rasterPixelX, rasterPixelY, rasterLevel)) { addToSeries(spectralBand, rasterPixelX, rasterPixelY, rasterLevel, series, wavelength);