Class Grib2Gds.SpaceViewPerspective

  • Enclosing class:
    Grib2Gds

    public static class Grib2Gds.SpaceViewPerspective
    extends Grib2Gds
    • Field Detail

      • flags

        public final int flags
    • Method Detail

      • makeHorizCoordSys

        public GdsHorizCoordSys makeHorizCoordSys()
        Make a Eumetsat MSG "Normalized Geostationary Projection" projection. Fake coordinates for now, then see if this can be generalized.

        =======

        from simon.elliott@eumetsat.int

        For products on a single pixel resolution grid, the scan angle is 83.84333 E-6 rad. So dx = 2 * arcsin(10e6/Nr) / 83.84333 E-6 = 3622.30, which encoded to the nearest integer is 3622. This is correctly encoded in our products.

        For products on a 3x3 pixel resolution grid, the scan angle is 3 * 83.84333 E-6 rad = 251.52999 E-6 rad. So dx = 2 * arcsin(10e6/Nr) / 251.52999 E-6 = 1207.43, which encoded to the nearest integer is 1207. This is correctly encoded in our products.

        Due to the elliptical shape of the earth, the calculation is a bit different in the y direction (Nr is in multiples of the equatorial radius, but the tangent point is much closer to the polar radius from the earth's centre. Approximating that the tangent point is actually at the polar radius from the earth's centre: The sine of the angle subtended by the Earths centre and the tangent point on the equator as seen from the spacecraft = Rp / (( Nr * Re) / 10^6) = (Rp * 10^6) / (Re * Nr)

        The angle subtended by the Earth equator as seen by the spacecraft is, by symmetry twice the inverse sine above, = 2 * arcsine ((Rp * 10^6) / (Re * Nr))

        For products on a single pixel resolution grid, the scan angle is 83.84333 E-6 rad. So dy = 2 * arcsine ((Rp * 10^6) / (Re * Nr)) / 83.84333 E-6 = 3610.06, which encoded to the nearest integer is 3610. This is currently encoded in our products as 3568.

        For products on a 3x3 pixel resolution grid, the scan angle is 3 * 83.84333 E-6 rad = 251.52999 E-6 rad. So dy = 2 * arcsine ((Rp * 10^6) / (Re * Nr)) / 251.52999 E-6 = 1203.35, which encoded to the nearest integer is 1203. This is currently encoded in our products as 1189.

        As you can see the dx and dy values we are using will lead to an error of around 1% in the y direction. I will ensure that the values are corrected to those explained here (3610 and 1203) as soon as possible.

        Specified by:
        makeHorizCoordSys in class Grib2Gds