public static Product extractBands(Product sourceProduct, String[] sourceBandNames, String[] sourceMaskNames) { Product product = new Product(sourceProduct.getName(), sourceProduct.getProductType(), sourceProduct.getSceneRasterWidth(), sourceProduct.getSceneRasterHeight()); product.setStartTime(sourceProduct.getStartTime()); product.setEndTime(sourceProduct.getEndTime()); product.setNumResolutionsMax(sourceProduct.getNumResolutionsMax()); ProductUtils.copyMetadata(sourceProduct, product); ProductUtils.copyGeoCoding(sourceProduct, product); ProductUtils.copyTiePointGrids(sourceProduct, product); ProductUtils.copyVectorData(sourceProduct, product); if (sourceMaskNames != null && sourceMaskNames.length > 0) { ProductHelper.copyMasks(sourceProduct, product, sourceMaskNames); } for (int i=0; i<sourceBandNames.length; i++) { Band sourceBand = sourceProduct.getBand(sourceBandNames[i]); String sourceBandName = sourceBand.getName(); String targetBandName = sourceBandName; ProductUtils.copyBand(sourceBandName, sourceProduct, targetBandName, product, true); Band targetBand = product.getBand(targetBandName); ProductUtils.copyGeoCoding(sourceBand, targetBand); } return product; }