private boolean isPixelGeoCodingBand(Band band) { final GeoCoding geoCoding = band.getGeoCoding(); if (geoCoding instanceof BasicPixelGeoCoding) { BasicPixelGeoCoding pixelGeoCoding = (BasicPixelGeoCoding) geoCoding; return pixelGeoCoding.getLatBand() == band || pixelGeoCoding.getLonBand() == band; } return false; }
private void exportLatLon(Band refBand, StringBuilder row, PixelPos pixelPos) { final GeoPos geoPos = new GeoPos(); refBand.getGeoCoding().getGeoPos(pixelPos, geoPos); row.append(geoPos.getLon()); row.append(getSeparator()); row.append(geoPos.getLat()); row.append(getSeparator()); }
protected void writeGeoCoding(final int indent) { if (product.isUsingSingleGeoCoding()) { writeGeoCoding(product.getGeoCoding(), indent, -1); } else { final Band[] bands = product.getBands(); for (int i = 0; i < bands.length; i++) { final Band band = bands[i]; writeGeoCoding(band.getGeoCoding(), indent, i); } } }
/** * Tests if all bands of this product are using a single, uniform geo-coding. Uniformity is tested by comparing * the band's geo-coding against the geo-coding of this product using the {@link Object#equals(Object)} method. * If this product does not have a geo-coding, the method returns false. * * @return true, if so */ public boolean isUsingSingleGeoCoding() { final GeoCoding geoCoding = getGeoCoding(); if (geoCoding == null) { return false; } for (int i = 0; i < getNumBands(); i++) { if (!geoCoding.equals(getBandAt(i).getGeoCoding())) { return false; } } for (int i = 0; i < getNumTiePointGrids(); i++) { if (!geoCoding.equals(getTiePointGridAt(i).getGeoCoding())) { return false; } } return true; }
protected void assertPixelValidState(Band targetBand, float sourceX, float sourceY, boolean expectedValid) throws IOException { final Band sourceBand = sourceProduct.getBand(targetBand.getName()); final PixelPos sourcePP = new PixelPos(sourceX, sourceY); final GeoPos geoPos = sourceBand.getGeoCoding().getGeoPos(sourcePP, null); final PixelPos targetPP = targetBand.getGeoCoding().getPixelPos(geoPos, null); boolean pixelValid = targetBand.isPixelValid((int) Math.floor(targetPP.x), (int) Math.floor(targetPP.y)); assertEquals(expectedValid, pixelValid); }
protected void assertPixelValue(Band targetBand, float sourceX, float sourceY, double expectedPixelValue, double delta) throws IOException { final Band sourceBand = sourceProduct.getBand(targetBand.getName()); final PixelPos sourcePP = new PixelPos(sourceX, sourceY); final GeoPos geoPos = sourceBand.getGeoCoding().getGeoPos(sourcePP, null); final PixelPos targetPP = targetBand.getGeoCoding().getPixelPos(geoPos, null); final double[] pixels = new double[1]; targetBand.readPixels((int) Math.floor(targetPP.x), (int) Math.floor(targetPP.y), 1, 1, pixels); assertEquals(expectedPixelValue, pixels[0], delta); }
public void testTransferGCFromProductToBand() { final AbstractGeoCoding geoCoding = createFXYSumGeoCoding(); _srcProduct.setGeoCoding(geoCoding); _destBand2.setGeoCoding(createFXYSumGeoCoding()); final Scene srcScene = SceneFactory.createScene(_srcProduct); final Scene destScene = SceneFactory.createScene(_destBand1); srcScene.transferGeoCodingTo(destScene, _subsetDef); assertNotNull(_destBand1.getGeoCoding()); assertNotNull(_destBand2.getGeoCoding()); assertFalse(_destProduct.isUsingSingleGeoCoding()); assertTrue(_destBand1.getGeoCoding() instanceof FXYGeoCoding); assertTrue(_destBand2.getGeoCoding() instanceof FXYGeoCoding); assertNotSame(_destBand1.getGeoCoding(), geoCoding); assertNotSame(_destBand2.getGeoCoding(), geoCoding); assertNotSame(_destBand1.getGeoCoding(), _destBand2.getGeoCoding()); }
public void testTransferBandedGCFromProductToProduct() { final AbstractGeoCoding geoCoding1 = createFXYSumGeoCoding(); _srcBand1.setGeoCoding(geoCoding1); final AbstractGeoCoding geoCoding2 = createFXYSumGeoCoding(); _srcBand2.setGeoCoding(geoCoding2); final Scene srcScene = SceneFactory.createScene(_srcProduct); final Scene destScene = SceneFactory.createScene(_destProduct); srcScene.transferGeoCodingTo(destScene, _subsetDef); assertNotNull(_destProduct.getGeoCoding()); assertFalse(_destProduct.isUsingSingleGeoCoding()); assertNotNull(_destBand1.getGeoCoding()); assertNotNull(_destBand2.getGeoCoding()); assertTrue(_destBand1.getGeoCoding() instanceof FXYGeoCoding); assertTrue(_destBand2.getGeoCoding() instanceof FXYGeoCoding); assertNotSame(_destBand1.getGeoCoding(), geoCoding1); assertNotSame(_destBand2.getGeoCoding(), geoCoding2); }
private void assertSampleValuesFloat(Band b1Band, GeoPos[] geoPositions, float[] expectedValues) { GeoCoding geoCoding = b1Band.getGeoCoding(); final Raster b1Raster = b1Band.getSourceImage().getData(); for (int i = 0; i < geoPositions.length; i++) { PixelPos pp = geoCoding.getPixelPos(geoPositions[i], null); final float expectedValue = expectedValues[i]; final float actualValue = b1Raster.getSampleFloat((int) pp.x, (int) pp.y, 0); final String message = String.format("At <%d>:", i); assertEquals(message, expectedValue, actualValue, 1.0e-6); } }
private void assertSampleValuesInt(Band b1Band, GeoPos[] geoPositions, int[] expectedValues) { GeoCoding geoCoding = b1Band.getGeoCoding(); final Raster b1Raster = b1Band.getSourceImage().getData(); for (int i = 0; i < geoPositions.length; i++) { PixelPos pp = geoCoding.getPixelPos(geoPositions[i], null); final int expectedValue = expectedValues[i]; final int actualValue = b1Raster.getSample((int) pp.x, (int) pp.y, 0); final String message = String.format("At <%d>:", i); assertEquals(message, expectedValue, actualValue); } }
public void testTransferBandedGCFromProductToBand() { final AbstractGeoCoding geoCoding1 = createFXYSumGeoCoding(); _srcBand1.setGeoCoding(geoCoding1); final AbstractGeoCoding geoCoding2 = createFXYSumGeoCoding(); _srcBand2.setGeoCoding(geoCoding2); _destBand2.setGeoCoding(createFXYSumGeoCoding()); final Scene srcScene = SceneFactory.createScene(_srcProduct); final Scene destScene = SceneFactory.createScene(_destBand1); srcScene.transferGeoCodingTo(destScene, _subsetDef); assertNotNull(_destProduct.getGeoCoding()); assertFalse(_destProduct.isUsingSingleGeoCoding()); assertNotNull(_destBand1.getGeoCoding()); assertNotNull(_destBand2.getGeoCoding()); assertTrue(_destBand1.getGeoCoding() instanceof FXYGeoCoding); assertNotSame(_destBand1.getGeoCoding(), geoCoding1); assertNotSame(_destBand1.getGeoCoding(), _destBand2.getGeoCoding()); }
public void testTransferGeoCodingWithoutSubset() { final Band srcNode = new Band("srcDummy",ProductData.TYPE_INT8, 10,20); srcNode.setGeoCoding(_geoCoding); final Scene srcScene = SceneFactory.createScene(srcNode); final Band destNode = new Band("destDummy",ProductData.TYPE_INT8, 10,20); final Scene destScene = SceneFactory.createScene(destNode); srcScene.transferGeoCodingTo(destScene, null); assertFXYGeoCodingIsCopied((FXYGeoCoding)destNode.getGeoCoding(), null); }
public void testTransferGCFromProductToProduct() { final AbstractGeoCoding geoCoding = createFXYSumGeoCoding(); _srcProduct.setGeoCoding(geoCoding); final Scene srcScene = SceneFactory.createScene(_srcProduct); final Scene destScene = SceneFactory.createScene(_destProduct); srcScene.transferGeoCodingTo(destScene, _subsetDef); assertNotNull(_destProduct.getGeoCoding()); assertTrue(_destProduct.getGeoCoding() instanceof FXYGeoCoding); assertNotSame(_destProduct.getGeoCoding(), geoCoding); assertTrue(_destProduct.isUsingSingleGeoCoding()); assertSame(_destBand1.getGeoCoding(), _destProduct.getGeoCoding()); assertSame(_destBand2.getGeoCoding(), _destProduct.getGeoCoding()); }
public void testTransferGCFromBandToProduct() { final AbstractGeoCoding geoCoding = createFXYSumGeoCoding(); _srcBand1.setGeoCoding(geoCoding); final Scene srcScene = SceneFactory.createScene(_srcBand1); final Scene destScene = SceneFactory.createScene(_destProduct); srcScene.transferGeoCodingTo(destScene, _subsetDef); assertNotNull(_destProduct.getGeoCoding()); assertTrue(_destProduct.getGeoCoding() instanceof FXYGeoCoding); assertNotSame(_destProduct.getGeoCoding(), geoCoding); assertTrue(_destProduct.isUsingSingleGeoCoding()); assertSame(_destBand1.getGeoCoding(), _destProduct.getGeoCoding()); assertSame(_destBand2.getGeoCoding(), _destProduct.getGeoCoding()); }
public void testTransferGeoCodingWithSubset() { final Band srcNode = new Band("srcDummy",ProductData.TYPE_INT8, 10,20); srcNode.setGeoCoding(_geoCoding); final Scene srcScene = SceneFactory.createScene(srcNode); final ProductSubsetDef subset = new ProductSubsetDef("subset"); subset.setRegion(10,10,50,50); subset.setSubSampling(2, 3); final Band destNode = new Band("destDummy",ProductData.TYPE_INT8, 10,20); final Scene destScene = SceneFactory.createScene(destNode); srcScene.transferGeoCodingTo(destScene, subset); assertFXYGeoCodingIsCopied((FXYGeoCoding)destNode.getGeoCoding(), subset); }
if (sourceBand.getGeoCoding() != null) { final Band targetBand; if (sourceBand instanceof VirtualBand) {
srcScene.transferGeoCodingTo(destScene, subsetDef); assertNotSame(mapGeoCoding, destNode.getGeoCoding()); final MapInfo origMapInfo = mapGeoCoding.getMapInfo(); final MapInfo copyMapInfo = ((MapGeoCoding) destNode.getGeoCoding()).getMapInfo();