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:
  • Constructor Details

  • Method Details

    • 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.
    • getParameterDescriptors

      public ParameterDescriptorGroup getParameterDescriptors()
      Returns the parameter descriptors for this map projection. This is used for a providing a default implementation of MapProjection.getParameterValues(), as well as arguments checking.
      Specified by:
      getParameterDescriptors in class MapProjection
      Returns:
      The parameter descriptors for this math transform, or null.
      See Also: