public static void writePlacemarksWithAdditionalData(Writer writer, String roleLabel, String productName, List<Placemark> placemarkList, List<Object[]> valueList, String[] standardColumnNames, String[] additionalColumnNames) { int columnCountMin = standardColumnNames.length; int columnCount = columnCountMin + additionalColumnNames.length; try (PrintWriter pw = new PrintWriter(writer)) { // Write file header pw.println("# BEAM " + roleLabel + " export table"); pw.println("#"); pw.println("# Product:\t" + productName); pw.println("# Created on:\t" + new Date()); pw.println(); Product product = null; if (!placemarkList.isEmpty()) { Placemark placemark = placemarkList.get(0); product = placemark.getProduct(); } if (product != null && additionalColumnNames.length != 0) { pw.println(getWavelengthLine(product, standardColumnNames, additionalColumnNames)); } pw.println(getHeaderLine(standardColumnNames, additionalColumnNames)); for (int i = 0; i < placemarkList.size(); i++) { Placemark placemark = placemarkList.get(i); Object[] values = valueList.get(i); pw.println(getDataLine(placemark, values, columnCountMin, columnCount)); } } }
/** * Updates pixel and geo position according to the current geometry (model coordinates). */ public void updatePositions() { final Object defaultGeometry = feature.getDefaultGeometry(); if (defaultGeometry instanceof Point) { final Point point = (Point) defaultGeometry; if (getProduct() != null) { final GeoCoding geoCoding = getProduct().getGeoCoding(); final AffineTransform i2m = ImageManager.getImageToModelTransform(geoCoding); PixelPos pixelPos = new PixelPos((float) point.getX(), (float) point.getY()); try { i2m.inverseTransform(pixelPos, pixelPos); } catch (NoninvertibleTransformException ignored) { // ignore } setPixelPosAttribute(pixelPos, true, false); } } }
private void updateDefaultGeometryAttribute(PixelPos pixelPos) { final Product product = getProduct(); final Point2D.Float geometryPoint = new Point2D.Float(pixelPos.x, pixelPos.y); if (product != null) { final AffineTransform i2m = ImageManager.getImageToModelTransform(product.getGeoCoding()); i2m.transform(pixelPos, geometryPoint); } final Point point = (Point) feature.getDefaultGeometry(); point.getCoordinate().setCoordinate(toCoordinate(geometryPoint)); point.geometryChanged(); }
private void setGeoPosAttribute(GeoPos geoPos, boolean updatePixelPos) { final Coordinate newCoordinate = toCoordinate(geoPos); final Coordinate oldCoordinate = getGeoPosAttribute(); if (!ObjectUtils.equalObjects(oldCoordinate, newCoordinate)) { if (oldCoordinate == null) { final GeometryFactory geometryFactory = new GeometryFactory(); setAttributeValue(PROPERTY_NAME_GEOPOS, geometryFactory.createPoint(newCoordinate)); } else if (newCoordinate != null) { final Point point = (Point) getAttributeValue(PROPERTY_NAME_GEOPOS); point.getCoordinate().setCoordinate(newCoordinate); point.geometryChanged(); } if (updatePixelPos && getProduct() != null) { final PixelPos pixelPos = getPixelPos(); descriptor.updatePixelPos(getProduct().getGeoCoding(), geoPos, pixelPos); setPixelPosAttribute(pixelPos, false, true); } fireProductNodeChanged(PROPERTY_NAME_GEOPOS); } }
private void setPixelPosAttribute(PixelPos pixelPos, boolean updateGeoPos, boolean updateDefaultGeometry) { final Coordinate newCoordinate = toCoordinate(pixelPos); final Coordinate oldCoordinate = getPixelPosAttribute(); if (!ObjectUtils.equalObjects(oldCoordinate, newCoordinate)) { if (oldCoordinate == null) { final GeometryFactory geometryFactory = new GeometryFactory(); setAttributeValue(PROPERTY_NAME_PIXELPOS, geometryFactory.createPoint(newCoordinate)); } else { final Point point = (Point) getAttributeValue(PROPERTY_NAME_PIXELPOS); point.getCoordinate().setCoordinate(newCoordinate); point.geometryChanged(); } // Make sure, object is in a consistent state if (updateDefaultGeometry) { updateDefaultGeometryAttribute(pixelPos); } if (updateGeoPos && getProduct() != null) { final GeoPos geoPos = getGeoPos(); descriptor.updateGeoPos(getProduct().getGeoCoding(), pixelPos, geoPos); setGeoPosAttribute(geoPos, false); } fireProductNodeChanged(PROPERTY_NAME_PIXELPOS); } }
void copyActivePlacemark() { Guardian.assertNotNull("product", product); Placemark activePlacemark = getSelectedPlacemark(); Guardian.assertNotNull("activePlacemark", activePlacemark); Placemark newPlacemark = Placemark.createPointPlacemark(activePlacemark.getDescriptor(), "copy_of_" + activePlacemark.getName(), activePlacemark.getLabel(), activePlacemark.getDescription(), activePlacemark.getPixelPos(), activePlacemark.getGeoPos(), activePlacemark.getProduct().getGeoCoding()); newPlacemark.setStyleCss(activePlacemark.getStyleCss()); if (PlacemarkDialog.showEditPlacemarkDialog(getPaneWindow(), product, newPlacemark, placemarkDescriptor)) { makePlacemarkNameUnique(newPlacemark); updateUIState(); } }
final PlacemarkDialog dialog = new PlacemarkDialog(parent, product, placemarkDescriptor, placemarkDescriptor instanceof PinDescriptor); boolean belongsToProduct = placemark.getProduct() != null; String titlePrefix = belongsToProduct ? "Edit" : "New"; String roleLabel = StringUtils.firstLetterUp(placemarkDescriptor.getRoleLabel());
@Test public void movePinByGeometry() { placemark.getFeature().setDefaultGeometry(newPoint(4.0, 2.0)); placemark.getProduct().getVectorDataGroup().get("pins").fireFeaturesChanged(placemark.getFeature()); final Point point = (Point) placemark.getFeature().getDefaultGeometry(); assertEquals(4.0, point.getX(), 0.0); assertEquals(2.0, point.getY(), 0.0); // todo: rq/?? - make asserts successful final double x = placemark.getPixelPos().getX(); final double y = placemark.getPixelPos().getY(); assertEquals(2.0, x, 0.0); assertEquals(1.0, y, 0.0); // todo: rq/?? - make asserts successful final double lon = placemark.getGeoPos().getLon(); final double lat = placemark.getGeoPos().getLat(); assertEquals(4.0, lon, 0.0); assertEquals(2.0, lat, 0.0); }