private boolean getPosition( final double lat, final double lon, final double alt, final int x0, final int y0, final int w, final int h, final PositionData data) { GeoUtils.geo2xyzWGS84(lat, lon, alt, data.earthPoint); /*final double zeroDopplerTime = SARGeocoding.getEarthPointZeroDopplerTimeNewton( firstLineUTC, lineTimeInterval, wavelength, data.earthPoint, orbit.sensorPosition, orbit.sensorVelocity);*/ final double zeroDopplerTime = SARGeocoding.getEarthPointZeroDopplerTimeNewton( firstLineUTC, lineTimeInterval, wavelength, data.earthPoint, orbit); if (zeroDopplerTime == SARGeocoding.NonValidZeroDopplerTime) { return false; } data.slantRange = SARGeocoding.computeSlantRange(zeroDopplerTime, orbit, data.earthPoint, data.sensorPos); final double zeroDopplerTimeWithoutBias = zeroDopplerTime + data.slantRange / Constants.lightSpeedInMetersPerDay; data.azimuthIndex = (zeroDopplerTimeWithoutBias - firstLineUTC) / lineTimeInterval; if (!(data.azimuthIndex > y0 - 1 && data.azimuthIndex <= y0 + h)) { return false; } data.slantRange = SARGeocoding.computeSlantRange( zeroDopplerTimeWithoutBias, orbit, data.earthPoint, data.sensorPos); if (!srgrFlag) { data.rangeIndex = (data.slantRange - nearEdgeSlantRange) / rangeSpacing; } else { data.rangeIndex = SARGeocoding.computeRangeIndex( srgrFlag, sourceImageWidth, firstLineUTC, lastLineUTC, rangeSpacing, zeroDopplerTimeWithoutBias, data.slantRange, nearEdgeSlantRange, srgrConvParams); } if (data.rangeIndex <= 0.0) { return false; } if (!nearRangeOnLeft) { data.rangeIndex = sourceImageWidth - 1 - data.rangeIndex; } if (!(data.rangeIndex >= x0 && data.rangeIndex < x0 + w)) { return false; } return true; }