Class MeteosatSG

  • All Implemented Interfaces:
    Serializable, MathTransform, MathTransform2D

    public class MeteosatSG
    extends MapProjection
    Meteosat Second Generation imagery projection

    Conversion of image coordinates (pixel column and row) into the corresponding geographical coordinates (Latitude and Longitude) of all MSG Satellites (Meteosat-8, Meteosat-9 and Meteosat-10) Level 1.5 VIS/IR data.

    Code based on reference software provided by EUMETSAT "MSG_navigation" v1.02 (see link below).

    Please be aware, that the program assumes the MSG image is ordered in the operational scanning direction which means from south to north and from east to west. With that the VIS/IR channels contains of 3712 x 3712 pixels, start to count on the most southern line and the most eastern column with pixel number 1,1.

    Conversion from native MSG files (delivered by EumetCAST) to geotiff format could be done with Meteosatlib package.

    To extract the European area using "products" utility: examples/products -a 1572,1024,90,560 -t 201505080600 --products=Vis006 Coordinates above are calculated from the upper left corner. Therefore, it is necessary to change it according to the EUMETCAST specification. gdal_translate -a_ullr 2140.5 3622.5 1116.5 3062.5 file_in.tif file_out.tif

    Additional examples could be find in the "MeteosatSG.txt" file in tests directory.

    References: [1] LRIT/HRIT Global Specification (CGMS 03, Issue 2.6, 12.08.1999) for the parameters used in the program. [2] MSG Ground Segment LRIT/HRIT Mission Specific Implementation, EUMETSAT Document, (EUM/MSG/SPE/057, Issue 6, 21. June 2006). [3] MSG Level 1.5 Image Data Format Description (EUM/MSG/ICD/105, Issue v6, 23. February 2010).

    Since:
    14.0
    Author:
    Maciej Filocha (ICM)
    See Also:
    Navigation Software for Meteosat-9 (MSG) - Level 1.5 VIS/IR/HRV data, Serialized Form
    • Method Detail

      • transformNormalized

        protected Point2D transformNormalized​(double x,
                                              double y,
                                              Point2D ptDst)
                                       throws ProjectionException
        Transforms the specified (λ,φ) coordinates (units in radians) and stores the result in ptDst (pixel coordinates).
        Specified by:
        transformNormalized in class MapProjection
        Parameters:
        x - The longitude of the coordinate, in radians.
        y - The latitude of the coordinate, in radians.
        ptDst - the specified coordinate point that stores the result of transforming ptSrc, or null. Ordinates will be in a dimensionless unit, as a linear distance on a unit sphere or ellipse.
        Returns:
        the coordinate point after transforming (lambda, phi) and storing the result in ptDst.
        Throws:
        ProjectionException - if the point can't be transformed.
      • inverseTransformNormalized

        protected Point2D inverseTransformNormalized​(double x,
                                                     double y,
                                                     Point2D ptDst)
                                              throws ProjectionException
        Transforms the specified (column,row) coordinates (units in "normalized" pixels) and stores the result in ptDst.
        Specified by:
        inverseTransformNormalized in class MapProjection
        Parameters:
        x - The easting of the coordinate, linear distance on a unit sphere or ellipse.
        y - The northing of the coordinate, linear distance on a unit sphere or ellipse.
        ptDst - the specified coordinate point that stores the result of transforming ptSrc, or null. Ordinates will be in radians.
        Returns:
        the coordinate point after transforming x, y and storing the result in ptDst.
        Throws:
        ProjectionException - if the point can't be transformed.
      • getToleranceForAssertions

        protected double getToleranceForAssertions​(double longitude,
                                                   double latitude)
        Description copied from class: MapProjection
        Maximal error (in metres) tolerated for assertions, if enabled. When assertions are enabled, every direct projection is followed by an inverse projection, and the result is compared to the original coordinate. If a distance greater than the tolerance level is found, then an ProjectionException will be thrown. Subclasses should override this method if they need to relax the tolerance level.
        Overrides:
        getToleranceForAssertions in class MapProjection
        Parameters:
        longitude - The longitude in decimal degrees.
        latitude - The latitude in decimal degrees.
        Returns:
        The tolerance level for assertions, in meters.