@Override public void redo() { placemarkInView.setName(newPlacemark.getName()); placemarkInView.setLabel(newPlacemark.getLabel()); placemarkInView.setDescription(newPlacemark.getDescription()); placemarkInView.setGeoPos(newPlacemark.getGeoPos()); placemarkInView.setStyleCss(newPlacemark.getStyleCss()); }
private Placemark createTransferrablePlacemark(Placemark placemark, Product product) { Placemark newPlacemark = Placemark.createPointPlacemark(placemark.getDescriptor(), placemark.getName(), placemark.getLabel(), placemark.getDescription(), placemark.getPixelPos(), placemark.getGeoPos(), product.getSceneGeoCoding()); newPlacemark.setStyleCss(placemark.getStyleCss()); return newPlacemark; }
protected void setDateTime(Date value, Placemark placemark) { placemark.getFeature().setAttribute(Placemark.PROPERTY_NAME_DATETIME, value); }
private void addSlaveGCPs(final PolynomialModel warpData, final String bandName) { final GeoCoding targetGeoCoding = targetProduct.getSceneGeoCoding(); final String newName = excludeMaster ? StackUtils.getBandNameWithoutDate(bandName) : bandName; final ProductNodeGroup<Placemark> targetGCPGroup = GCPManager.instance().getGcpGroup(targetProduct.getBand(newName)); targetGCPGroup.removeAll(); final List<Placemark> slaveGCPList = warpData.getSlaveGCPList(); for (final Placemark sPin : slaveGCPList) { final Placemark tPin = Placemark.createPointPlacemark(GcpDescriptor.getInstance(), sPin.getName(), sPin.getLabel(), sPin.getDescription(), sPin.getPixelPos(), sPin.getGeoPos(), targetGeoCoding); targetGCPGroup.add(tPin); } }
double y = Double.NaN; final PixelPos pixelPos = placemark.getPixelPos(); if (pixelPos != null) { x = pixelPos.x; double lat = Double.NaN; final GeoPos geoPos = placemark.getGeoPos(); if (geoPos != null) { lon = geoPos.lon; return PlacemarkUtils.getPlacemarkColor(placemark); case labelIndex: return placemark.getLabel(); default: return "";
private static boolean isValid(Placemark p) { final PixelPos pixelPos = p.getPixelPos(); final GeoPos geoPos = p.getGeoPos(); return pixelPos != null && pixelPos.isValid() && geoPos != null && geoPos.isValid(); }
@Test public void movePinByPixelPosition() { placemark.setPixelPos(new PixelPos(2.0f, 1.0f)); 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 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 lon = placemark.getGeoPos().getLon(); final double lat = placemark.getGeoPos().getLat(); assertEquals(4.0, lon, 0.0); assertEquals(2.0, lat, 0.0); }
public Coordinate[] getCoordinates() { Coordinate[] coordinates = new Coordinate[coordinateTableModel.getRowCount()]; for (int i = 0; i < coordinateTableModel.getRowCount(); i++) { final Placemark placemark = coordinateTableModel.getPlacemarkAt(i); SimpleFeature feature = placemark.getFeature(); final Date dateTime = (Date) feature.getAttribute(Placemark.PROPERTY_NAME_DATETIME); final Coordinate.OriginalValue[] originalValues = PixExOp.getOriginalValues(feature); if (placemark.getGeoPos() == null) { final Point point = (Point) feature.getDefaultGeometry(); coordinates[i] = new Coordinate(placemark.getName(), point.getY(), point.getX(), dateTime, originalValues); } else { coordinates[i] = new Coordinate(placemark.getName(), placemark.getGeoPos().getLat(), placemark.getGeoPos().getLon(), dateTime, originalValues); } } return coordinates; }
final PixelPos pixelPos = placemark.getPixelPos(); boolean productContainsPixelPos = targetProduct.containsPixel(pixelPos); if (!canGetPixelPos && isPin && !productContainsPixelPos) { placemarkDescriptor.updatePixelPos(geoCoding, placemark.getGeoPos(), pixelPos); getPlacemarkGroup(targetProduct).add(placemark); if (adjustPinGeoPos) { placemark.setPixelPos(pixelPos); } else { placemark.setGeoPos(placemark.getGeoPos());
@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); }
@Override public void run() { //System.out.println("Running "+mPin.getName()); boolean getSlaveGCP = getCoarseSlaveGCPPosition(slaveBand1, slaveBand2, mGCPPixelPos, sGCPPixelPos); if (getSlaveGCP && complexCoregistration && applyFineRegistration) { if (inSAROptimized) { getSlaveGCP = getFineOffsets(slaveBand1, slaveBand2, mGCPPixelPos, sGCPPixelPos); } else { getSlaveGCP = getFineSlaveGCPPosition(slaveBand1, slaveBand2, mGCPPixelPos, sGCPPixelPos); } } if (getSlaveGCP) { final Placemark sPin = Placemark.createPointPlacemark( GcpDescriptor.getInstance(), mPin.getName(), mPin.getLabel(), mPin.getDescription(), sGCPPixelPos, mGCPGeoPos, tgtGeoCoding); addPlacemark(sPin); //System.out.println("final "+mPin.getName()+" = " + "(" + sGCPPixelPos.x + "," + sGCPPixelPos.y + ")"); //System.out.println(); } //else { //System.out.println("GCP(" + mPin.getName() + ") is invalid."); //} }
@Test public void initialState() { final double x = placemark.getPixelPos().getX(); final double y = placemark.getPixelPos().getY(); assertEquals(1.0, x, 0.0); assertEquals(1.0, y, 0.0); final Point point = (Point) placemark.getFeature().getDefaultGeometry(); assertEquals(2.0, point.getX(), 0.0); assertEquals(2.0, point.getY(), 0.0); final double lon = placemark.getGeoPos().getLon(); final double lat = placemark.getGeoPos().getLat(); assertEquals(2.0, lon, 0.0); assertEquals(2.0, lat, 0.0); }
/** * Get GCP coordinates for master and slave bands. * * @param masterGCPGroup The master GCPs. */ private void getMasterAndSlaveGCPCoordinates(final ProductNodeGroup<Placemark> masterGCPGroup) { masterGCPCoords = new float[2 * numValidGCPs]; slaveGCPCoords = new float[2 * numValidGCPs]; for (int i = 0; i < numValidGCPs; ++i) { final Placemark sPin = slaveGCPList.get(i); final PixelPos sGCPPos = sPin.getPixelPos(); //System.out.println("WARP: slave gcp[" + i + "] = " + "(" + sGCPPos.x + "," + sGCPPos.y + ")"); final Placemark mPin = masterGCPGroup.get(sPin.getName()); final PixelPos mGCPPos = mPin.getPixelPos(); //System.out.println("WARP: master gcp[" + i + "] = " + "(" + mGCPPos.x + "," + mGCPPos.y + ")"); final int j = 2 * i; masterGCPCoords[j] = (float) mGCPPos.x; masterGCPCoords[j + 1] = (float) mGCPPos.y; slaveGCPCoords[j] = (float) sGCPPos.x; slaveGCPCoords[j + 1] = (float) sGCPPos.y; } }
private boolean makePlacemarkNameUnique0(Placemark placemark, Product targetProduct) { ProductNodeGroup<Placemark> placemarkGroup = getPlacemarkGroup(targetProduct); if (placemarkGroup.get(placemark.getName()) == placemark) { return false; } String name0 = placemark.getName(); String name = name0; String label0 = placemark.getLabel(); String label = label0; int id = 1; while (placemarkGroup.contains(name)) { if (placemarkGroup.get(name).getLabel().equals(label)) { label = label0 + "_" + id; } name = name0 + "_" + id; id++; } if (!name0.equals(name)) { placemark.setName(name); if (!label0.equals(label)) { placemark.setLabel(label); } return true; } return false; }
protected void setPixelPosX(Object value, Placemark placemark) { double pixelY = placemark.getPixelPos() == null ? -1 : placemark.getPixelPos().y; placemark.setPixelPos(new PixelPos((Double) value, pixelY)); }
private boolean placemarkHasGeoPos(int rowIndex) { return getPlacemarkAt(rowIndex).getGeoPos() != null; } }
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); } }
@Test public void testWritingShapeFile_Pins() throws Exception { Placemark pin = Placemark.createPointPlacemark(PinDescriptor.getInstance(), "name1", "label1", "", new PixelPos(0, 0), new GeoPos(52.0, 10.0), null); ArrayList<SimpleFeature> features = new ArrayList<>(); features.add(pin.getFeature()); Class<Point> geomType = Point.class; doExportImport(features, geomType); }
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)); } }