public Geostationary() { super(NAME, false); navigation = new GEOSTransform(); makePP(); }
public GEOSTransform(double subLonDegrees, double perspective_point_height, double semi_minor_axis, double semi_major_axis, String sweep_angle_axis) { Geoid geoid = new Geoid(semi_minor_axis, semi_major_axis); scan_geom = sweepAngleAxisToScanGeom(sweep_angle_axis); init(subLonDegrees, scan_geom, geoid, perspective_point_height); }
private void makePP() { addParameter(CF.GRID_MAPPING_NAME, NAME); addParameter(CF.LONGITUDE_OF_PROJECTION_ORIGIN, navigation.sub_lon_degrees); addParameter(CF.LATITUDE_OF_PROJECTION_ORIGIN, 0.0); addParameter(CF.PERSPECTIVE_POINT_HEIGHT, navigation.sat_height * 1000.0); addParameter(CF.SWEEP_ANGLE_AXIS, GEOSTransform.scanGeomToSweepAngleAxis(navigation.scan_geom)); addParameter(CF.SEMI_MAJOR_AXIS, navigation.r_eq * 1000.0); addParameter(CF.SEMI_MINOR_AXIS, navigation.r_pol * 1000.0); }
/** * copy constructor - avoid clone !! */ @Override public ProjectionImpl constructCopy() { return new MSGnavigation(lat0, lon0, 1000 * major_axis, 1000 * minor_axis, 1000 * sat_height, scale_x, scale_y); }
/** * Create a ProjectionRect from the given LatLonRect. * Handles lat/lon points that do not intersect the projection panel. * * @param rect the LatLonRect * @return ProjectionRect, or null if no part of the LatLonRect intersects the projection plane */ @Override public ProjectionRect latLonToProjBB(LatLonRect rect) { BoundingBoxHelper bbhelper = new BoundingBoxHelper(this, maxR); return bbhelper.latLonToProjBB(rect); }
public Geostationary(double subLonDegrees, String sweepAngleAxis, double geoCoordinateScaleFactor) { super(NAME, false); String scanGeometry = GEOSTransform.sweepAngleAxisToScanGeom(sweepAngleAxis); navigation = new GEOSTransform(subLonDegrees, scanGeometry); if (geoCoordinateScaleFactor > 0) { isGeoCoordinateScaled = true; this.geoCoordinateScaleFactor = geoCoordinateScaleFactor; } makePP(); }
/** * copy constructor - avoid clone !! */ @Override public ProjectionImpl constructCopy() { // constructor takes sweep_angle_axis, so need to translate between // scan geometry and sweep_angle_axis first // GOES: x // GEOS: y String sweepAxisAngle = GEOSTransform.scanGeomToSweepAngleAxis(navigation.scan_geom); return new Geostationary(navigation.sub_lon_degrees, sweepAxisAngle, geoCoordinateScaleFactor); }
/** * Transform integer FGF coordinates to (longitude, latitude) of pixel center * The (i,j) pixel, zero-based, refers to the pixel center. * * @param scale_x scaleFactor from the x coordinate variable * @param offset_x addOffset from the x coordinate variable * @param scale_y scaleFactor from the y coordinate variable * @param offset_y addOffset from the y coordinate variable * @return (Longitude, Latitude), units: degrees, of FGF (i,j) pixel center */ public double[] elemLineToEarth(int elem, int line, double scale_x, double offset_x, double scale_y, double offset_y) { return FGFtoEarth((double) elem, (double) line, scale_x, offset_x, scale_y, offset_y); }
/** * copy constructor - avoid clone !! */ @Override public ProjectionImpl constructCopy() { return new Geostationary(navigation.sub_lon_degrees, navigation.scan_geom); }
public Geostationary() { super(NAME, false); navigation = new GEOSTransform(); makePP(); }
/** * Create a ProjectionRect from the given LatLonRect. * Handles lat/lon points that do not intersect the projection panel. * * @param rect the LatLonRect * @return ProjectionRect, or null if no part of the LatLonRect intersects the projection plane */ @Override public ProjectionRect latLonToProjBB(LatLonRect rect) { BoundingBoxHelper bbhelper = new BoundingBoxHelper(this, maxR); return bbhelper.latLonToProjBB(rect); }
public Geostationary(double subLonDegrees, boolean isSweepX) { super(NAME, false); String sweepAngleAxis = "y"; if (isSweepX) { sweepAngleAxis = "x"; } String scanGeometry = GEOSTransform.sweepAngleAxisToScanGeom(sweepAngleAxis); navigation = new GEOSTransform(subLonDegrees, scanGeometry); makePP(); }
/** * Transform integer FGF coordinates to (longitude, latitude) of pixel center * The (i,j) pixel, zero-based, refers to the pixel center. * * @param scale_x scaleFactor from the x coordinate variable * @param offset_x addOffset from the x coordinate variable * @param scale_y scaleFactor from the y coordinate variable * @param offset_y addOffset from the y coordinate variable * @return (Longitude, Latitude), units: degrees, of FGF (i,j) pixel center */ public double[] elemLineToEarth(int elem, int line, double scale_x, double offset_x, double scale_y, double offset_y) { return FGFtoEarth((double) elem, (double) line, scale_x, offset_x, scale_y, offset_y); }
public Geostationary(double subLonDegrees) { super(NAME, false); navigation = new GEOSTransform(subLonDegrees, GEOSTransform.GOES); makePP(); }
/** * Create a ProjectionRect from the given LatLonRect. * Handles lat/lon points that do not intersect the projection panel. * * @param rect the LatLonRect * @return ProjectionRect, or null if no part of the LatLonRect intersects the projection plane */ @Override public ProjectionRect latLonToProjBB(LatLonRect rect) { BoundingBoxHelper bbhelper = new BoundingBoxHelper(this, maxR); return bbhelper.latLonToProjBB(rect); }
public Geostationary(double subLonDegrees) { super(NAME, false); navigation = new GEOSTransform(subLonDegrees, GEOSTransform.GOES); makePP(); }
/** * Create a ProjectionRect from the given LatLonRect. * Handles lat/lon points that do not intersect the projection panel. * * @param rect the LatLonRect * @return ProjectionRect, or null if no part of the LatLonRect intersects the projection plane */ @Override public ProjectionRect latLonToProjBB(LatLonRect rect) { BoundingBoxHelper bbhelper = new BoundingBoxHelper(this, maxR); return bbhelper.latLonToProjBB(rect); }
public Geostationary(double subLonDegrees, boolean isSweepX) { super(NAME, false); String scanGeometry = GEOSTransform.GOES; if (!isSweepX) { scanGeometry = GEOSTransform.GEOS; } navigation = new GEOSTransform(subLonDegrees, scanGeometry); makePP(); }
public Geostationary(double subLonDegrees, String sweepAngleAxis) { super(NAME, false); String scanGeometry = GEOSTransform.GOES; if (sweepAngleAxis.equals("x")) { scanGeometry = GEOSTransform.GOES; } else if (sweepAngleAxis.equals("y")) { scanGeometry = GEOSTransform.GEOS; } navigation = new GEOSTransform(subLonDegrees, scanGeometry); makePP(); }