class BowtiePixelGeoCoding extends AbstractBowtieGeoCoding {

    @Override
    public boolean transferGeoCoding(final Scene srcScene, final Scene destScene, final ProductSubsetDef subsetDef) {

        BowtiePixelGeoCoding srcGeocoding = (BowtiePixelGeoCoding)srcScene.getGeoCoding();
        final String latBandName = srcGeocoding.latBand.getName();
        final String lonBandName = srcGeocoding.lonBand.getName();

        try {
            ensureLatLonBands(destScene, subsetDef);
        } catch (IOException e) {
            return false;
        }
        final Band targetLatBand = destScene.getProduct().getBand(latBandName);
        final Band targetLonBand = destScene.getProduct().getBand(lonBandName);
        if(subsetDef != null) {
            if(subsetDef.getSubSamplingY() != 1) {
                destScene.setGeoCoding(GeoCodingFactory.createPixelGeoCoding(targetLatBand, targetLonBand, null, 5));
                return true;
            }
        }

        if (targetLatBand != null && targetLonBand != null) {
            destScene.setGeoCoding(new BowtiePixelGeoCoding(targetLatBand, targetLonBand, srcGeocoding._scanlineHeight));
            return true;
        }
        return false;
    }

    public  BowtiePixelGeoCoding(Band latBand, Band lonBand, int scanlineHeight);

}