I'm using this code: https://github.com/mcidasv/mcidasv/blob/master/ucar/unidata/geoloc/projection/sat/GEOSTransform.java to retrieve longitude and latitude in Earth system from column, line coordinates in Satellite system. This is my code: public class Main { private final static double COFF=1856; private final static double LOFF=1856; private final static double CFAC = -781648343; private final static double LFAC = -781648343; public static void main(String args[]){ GEOSTransform geo = new GEOSTransform(0, GEOSTransform.GEOS, GEOSTransform.WGS84); /* double[] lonlat = geo.FGFtoEarth(1, 34, CFAC, COFF, LFAC, LOFF); System.out.println("LONLAT "+lonlat[0]+", "+lonlat[1]) */ for(int x=1; x<1000;x+=1) for(int y=1;y<1000;y+=1){ double[] lonlat = geo.FGFtoEarth(x, y, CFAC, COFF, LFAC, LOFF); System.out.println("LONLAT "+lonlat[0]+", "+lonlat[1]+": xy "+x+", "+y); } } } and I get NaN values from FGFtoEarth. Why? For that method, the doc says "Transform fractional FGF coordinates to (longitude, latitude)." What are fraction FGF coordinates? I think there is something wrong with the passed in coordinates. Note that const members I think are correct, but I'm not sure if CFAC and LFAC are negative like above, or positive. Anyway in both case the result is the same, NaN values.