Language/Format: C, Fortran
Application type(s): Data Read/Write
Related project(s): GOES, METEOSAT, MSG


This library is a set of routines for manipulating geostationary satellites data. It allows to compute latitudes, longitudes, azimutal and zenithal angles from rows and columns in the satellite grid and the reverse.

Hopefully the function names should be self-explanatory. Inputs are passed by values, outputs passed by pointers (only one value addressed by each pointer). The functions suffixed by _double handle fractional rows and columns instead of integral values.



#include geostat.h
geostat_err_t geostat_init (const char *satellite)
geostat_err_t geostat_latlon_to_rowcol_double (double latitude, double longitude, double *row, double *column)
geostat_err_t geostat_rowcol_to_latlon_double (double row, double column, double *latitude, double *longitude)
geostat_err_t geostat_latlon_to_rowcol (const double latitude, const double longitude, unsigned long *row, unsigned long *column)
geostat_err_t geostat_rowcol_to_latlon (const unsigned long row, const unsigned long column, double *latitude, double *longitude)
geostat_err_t geostat_get_azimuth_and_zenithal (const double latitude, const double longitude, double *azimuth, double *zenithal)   

geostat_init must be called before any other function of the package. It must be given the name of the satellite ("meteosat", "goes_E", "msg") for which all subsequent computations will be performed. The behavior of other functions is undefined if geostat_init has not returned the GEOSTAT_ERR_OK value.


   success, values returned by pointer may be used safely 
   input data (row, column) or (latitude, longitude) not corresponding to any valid output 
   call to geostat_init failed or was forgotten 
   invalid input values latitude, longitude (only for functions <b>geostat_latlon_*) 

NB. The distinction between GEOSTAT_ERR_OUT_OF_RANGE and GEOSTAT_ERR_BAD_INPUT_COORD seems somewhat artificial, it comes from the underlying fortran code which returns distinct error codes (the hardcoded values documented here) depending on the situation.


Sources can be downloaded here :


Package can be browsed here :



Copyright (C) 2006 Icare -

Fabrice Ducos, Original code in Fortran developed by SATMOS and supplied by Genevieve Seze from LMD, geostat is a C wrapper from Icare

This program is a free software; you can redistribute it and/or modify it under the terms of the CeCILL Public License as published by (License version 2 or later).

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL Public License for more details.

You should have received a copy of the CeCILL Public License along with this program; if not, please contact

For any questions or concerns regarding this program, or general information about the ICARE Project, please email to

Author(s): C wrapper : Fabrice Ducos ( ICARE - LOA - Univ. of Lille ) ; FORTRAN Library developped by SATMOS and supplied by Geneviève Sèze ( LMD )