@Override public void run() { final PixelPos sGCP = new PixelPos(gcpData.mGCP.x, gcpData.mGCP.y); boolean getSlaveGCP = getOffsets(gcpData.mGCP, sGCP); if (getSlaveGCP) { saveSlaveGCP(sGCP); } }
private double readEnergy(Placemark pin, Band spectralBand) { //todo [Multisize_products] use scenerastertransform here final Object pinGeometry = pin.getFeature().getDefaultGeometry(); if (pinGeometry == null || !(pinGeometry instanceof Point)) { return spectralBand.getGeophysicalNoDataValue(); } final Point2D.Double modelPoint = new Point2D.Double(((Point) pinGeometry).getCoordinate().x, ((Point) pinGeometry).getCoordinate().y); final MultiLevelModel multiLevelModel = spectralBand.getMultiLevelModel(); int level = getLevel(multiLevelModel); final AffineTransform m2iTransform = multiLevelModel.getModelToImageTransform(level); final PixelPos pinLevelRasterPos = new PixelPos(); m2iTransform.transform(modelPoint, pinLevelRasterPos); int pinLevelRasterX = (int) Math.floor(pinLevelRasterPos.getX()); int pinLevelRasterY = (int) Math.floor(pinLevelRasterPos.getY()); if (coordinatesAreInRasterBounds(spectralBand, pinLevelRasterX, pinLevelRasterY, level) && isPixelValid(spectralBand, pinLevelRasterX, pinLevelRasterY, level)) { return ProductUtils.getGeophysicalSampleAsDouble(spectralBand, pinLevelRasterX, pinLevelRasterY, level); } return spectralBand.getGeophysicalNoDataValue(); }
private void updateXYParams(GeoPos geoPos1, GeoPos geoPos2) { final GeoCoding geoCoding = product.getSceneGeoCoding(); final PixelPos pixelPos1 = geoCoding.getPixelPos(geoPos1, null); if (!pixelPos1.isValid()) { pixelPos1.setLocation(0, 0); } final PixelPos pixelPos2 = geoCoding.getPixelPos(geoPos2, null); if (!pixelPos2.isValid()) { pixelPos2.setLocation(product.getSceneRasterWidth(), product.getSceneRasterHeight()); } final Rectangle.Float region = new Rectangle.Float(); region.setFrameFromDiagonal(pixelPos1.x, pixelPos1.y, pixelPos2.x, pixelPos2.y); final Rectangle.Float productBounds = new Rectangle.Float(0, 0, product.getSceneRasterWidth(), product.getSceneRasterHeight()); Rectangle2D finalRegion = productBounds.createIntersection(region); paramX1.setValue((int) finalRegion.getMinX(), null); paramY1.setValue((int) finalRegion.getMinY(), null); paramX2.setValue((int) finalRegion.getMaxX() - 1, null); paramY2.setValue((int) finalRegion.getMaxY() - 1, null); }
static double performSpatialInterpolation(PixelPos pixelPos, double[] values) { double d_x = pixelPos.getX() + 0.5 - (int) (pixelPos.getX() + 0.5); double d_y = pixelPos.getY() + 0.5 - (int) (pixelPos.getY() + 0.5); double interpolated = values[0] * (1. - d_y) * (1. - d_x); interpolated += values[1] * (1. - d_y) * d_x; interpolated += values[2] * d_y * (1. - d_x); interpolated += values[3] * d_y * d_x; return interpolated; }
final int latMaxIdx = (int)Math.floor(upperLeft.getY()); final int latMinIdx = (int)Math.ceil(lowerRight.getY()); final int lonMinIdx = (int)Math.floor(upperLeft.getX()); final int lonMaxIdx = (int)Math.ceil(lowerRight.getX()); ); final SARPosition.PositionData posData = new SARPosition.PositionData(); final PixelPos pix = new PixelPos(); for (int p = 0; p < numPixels; p++) { pix.setLocation(lonMinIdx + p, latMaxIdx + l); GeoPos gp = dem.getGeoPos(pix); lat[l][p] = gp.lat; alt = dem.getElevation(new GeoPos(latArray[yy][xx], lonArray[yy][xx])); if (!alt.equals(demNoDataValue)) { slavePixelPos[yy][xx] = new PixelPos(rgArray[yy][xx], azArray[yy][xx]); allElementsAreNull = false; } else { slavePixelPos[yy][xx] = new PixelPos(rgArray[yy][xx], azArray[yy][xx]); allElementsAreNull = false;
final PixelPos slvPixelPos = new PixelPos(); final PixelPos tgtPixelPos = new PixelPos(); final GeoPos slvGeoPos = new GeoPos(); slvGeoCoding.getGeoPos(new PixelPos(10, 10), slvGeoPos); if (false) {// (pixelPosValid(targGeoCoding, slvGeoPos, tgtPixelPos, targImageWidth, targImageHeight)) { slvGeoCoding.getGeoPos(new PixelPos(slvImageWidth - 10, slvImageHeight - 10), slvGeoPos); if (pixelPosValid(targGeoCoding, slvGeoPos, tgtPixelPos, targImageWidth, targImageHeight)) { getPixelPos(c.y, c.x, slvGeoCoding, slvPixelPos); if (slvPixelPos.isValid() && slvPixelPos.x >= 0 && slvPixelPos.x < slvImageWidth && slvPixelPos.y >= 0 && slvPixelPos.y < slvImageHeight) { if (tgtPixelPos.isValid() && tgtPixelPos.x >= 0 && tgtPixelPos.x < targImageWidth && tgtPixelPos.y >= 0 && tgtPixelPos.y < targImageHeight) {
try { final GeoPos geoPos = new GeoPos(); final PixelPos pixelPos = new PixelPos(); float elevation; for (int y = y0; y < y0 + h; y++) { for (int x = x0; x < x0 + w; x++) { pixelPos.setLocation(x + 0.5f, y + 0.5f); geoCoding.getGeoPos(pixelPos, geoPos); try {
private static boolean pixelPosValid(final GeoCoding geoCoding, final GeoPos geoPos, final PixelPos pixelPos, final int width, final int height) { geoCoding.getPixelPos(geoPos, pixelPos); return (pixelPos.isValid() && pixelPos.x >= 0 && pixelPos.x < width && pixelPos.y >= 0 && pixelPos.y < height); }
final Point2D viewCenter = new Point2D.Double(viewCenterX, viewCenterY); final Point2D modelCenter = thisViewport.getViewToModelTransform().transform(viewCenter, null); final PixelPos imageCenter = new PixelPos(); getBaseImageLayer().getModelToImageTransform().transform(modelCenter, imageCenter); final GeoPos geoCenter = new GeoPos(); thisGeoCoding.getGeoPos(imageCenter, geoCenter); thatGeoCoding.getPixelPos(geoCenter, imageCenter); if (imageCenter.isValid()) { thatView.getBaseImageLayer().getImageToModelTransform().transform(imageCenter, modelCenter); thatViewport.setZoomFactor(thisViewport.getZoomFactor(), modelCenter.getX(), modelCenter.getY());
try { final GeoPos geoPos = new GeoPos(); final PixelPos pixelPos1 = new PixelPos(); final PixelPos pixelPos2 = new PixelPos(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { double valueY = 0; for (float[] offset : OFFSETS) { pixelPos1.setLocation(x + offset[0], y + offset[1]); product.getSceneGeoCoding().getGeoPos(pixelPos1, geoPos); product.getSceneGeoCoding().getPixelPos(geoPos, pixelPos2);
private static Placemark[] getValidGcps(ProductNodeGroup<Placemark> gcpGroup) { final List<Placemark> gcpList = new ArrayList<Placemark>(gcpGroup.getNodeCount()); for (int i = 0; i < gcpGroup.getNodeCount(); i++) { final Placemark p = gcpGroup.get(i); final PixelPos pixelPos = p.getPixelPos(); final GeoPos geoPos = p.getGeoPos(); if (pixelPos != null && pixelPos.isValid() && geoPos != null && geoPos.isValid()) { gcpList.add(p); } } return gcpList.toArray(new Placemark[gcpList.size()]); }
private PixelPos computeLevelZeroPixelPos(ImageLayer imageLayer, int pixelX, int pixelY, int currentLevel) { if (currentLevel != 0) { AffineTransform i2mTransform = imageLayer.getImageToModelTransform(currentLevel); Point2D modelP = i2mTransform.transform(new Point2D.Double(pixelX + 0.5, pixelY + 0.5), null); AffineTransform m2iTransform = imageLayer.getModelToImageTransform(); Point2D imageP = m2iTransform.transform(modelP, null); return new PixelPos(new Float(imageP.getX()), new Float(imageP.getY())); } else { return new PixelPos(pixelX + 0.5, pixelY + 0.5); } }
topLeft = new PixelPos((float) env.getMinX(), (float) env.getMinY()); bottomRight = new PixelPos((float) env.getMaxX(), (float) env.getMaxY()); } else { final GeoPos geo1 = new GeoPos((float) env.getMinY(), (float) env.getMinX()); final int minX = (int) Math.min(topLeft.getX(), bottomRight.getX()); final int maxX = (int) Math.max(topLeft.getX(), bottomRight.getX()); final int minY = (int) Math.min(topLeft.getY(), bottomRight.getY()); final int maxY = (int) Math.max(topLeft.getY(), bottomRight.getY());
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(); }
private GeoPos getCenterGeoPos(GeoCoding geoCoding, int width, int height) { final PixelPos centerPixelPos = new PixelPos(0.5 * width + 0.5, 0.5 * height + 0.5); return geoCoding.getGeoPos(centerPixelPos, null); }
public float getAerosolType(GeoPos geoPos) { final PixelPos pixelPos = new PixelPos(); geoCoding.getPixelPos(geoPos, pixelPos); int startX = pixelPos.getX() - 0.5 < 0 ? 359 : (int) (pixelPos.getX() - 0.5); int endX = (startX + 1) % 359; int startY = (int) (pixelPos.getY() - 0.5); int endY = startY + 1;
@Override public void readValues(final ImageLayer imageLayer, final GeoPos geoPos, final int level) { resetData(); for (Band band : selectedBands) { final int index = getTimeIndex(band); if (index >= 0) { final PixelPos pix = band.getGeoCoding().getPixelPos(geoPos, null); dataPoints[index] = getPixelDouble(band, (int) pix.getX(), (int) pix.getY()); if (dataPoints[index] == band.getNoDataValue()) { dataPoints[index] = Double.NaN; } } } Range.computeRangeDouble(dataPoints, IndexValidator.TRUE, dataPointRange, ProgressMonitor.NULL); // no invalidate() call here, SpectrumDiagram does this }