GithubHelp home page GithubHelp logo

arpa-simc / meteosatlib Goto Github PK

View Code? Open in Web Editor NEW
8.0 10.0 2.0 10.13 MB

OpenMTP/HRI/HRIT C++ access libraries, gdal drivers and other tools

License: GNU General Public License v2.0

Shell 0.35% C++ 92.02% C 3.12% Makefile 1.34% M4 1.60% Python 1.57%
meteorology hrit satellite-imagery grib2

meteosatlib's Introduction

Build Status Build Status Build Status Build Status Build Status

Meteosatlib

Introduction

This is a set of libraries, tools and GDAL plugins to read and write Meteosat images in several formats.

There are low-level functions to work with: HRIT/LRIT, HRI, OpenMTP, and OpenMTP-IDS.

The GDAL driver can work with xRIT, two NetCDF dialects, GRIB.

Use at Your own risk and for any purposes.

See AUTHORS file for contact information.

See https://github.com/ARPA-SIMC/meteosatlib/wiki for more examples and troubleshooting.

Installation instructions

IMPORTANT about HRIT support:

This library is used to read Meteosat files on a PDUS receiving station. No decryption is performed. Files are expected to be already decrypted by using the EUMETSAT key unit, or to be transitted already in clear form.

For MSG data decompression, You need the EUMETSAT source code for the decompression library for Wavelet, JPEG and T4 images.

The source is distributed at https://gitlab.eumetsat.int/open-source/PublicDecompWT and is set up as a git submodule here. Use git clone --recurse-submodules https://github.com/ARPA-SIMC/meteosatlib.git to obtain the sources.

Besides PublicDecompWT requisite described above, meteosatlib is a standard autotools package. See the INSTALL file for detailed instructions, which generally can be summarised as tue usual:

autoreconf -ifv
./configure
make
make check # optional
make install

If you're familiar with .rpm and .deb packaging you'll find the packaging files in the debian and fedora directories.

Meteosatlib is also already packaged .rpm formats. For CentOS and Fedora, rpm files are hosted in a copr repo: https://copr.fedorainfracloud.org/coprs/simc/stable/

Package contents

msat/ the low-level meteosatlib library. It contains functions to directly access all supported formats.

gdal/ the GDAL plugin sources, which implement GDAL drivers using the low-level meteosatlib library.

tests/ unit tests.

tools/ command line tools using the library.

examples/ example code using the low-level libraries and the GDAL plugin.

License

Meteosatlib is licensed under the terms of the GNU General Public License version 2. Please see the file LICENSE for details.

meteosatlib's People

Contributors

brancomat avatar edigiacomo avatar spanezz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

meteosatlib's Issues

RSS HRV channel import problem

(as opened by Maciej Filocha on sf mailinglist)

This command works as expected:

gdalwarp -t_srs "+proj=latlong" -te 14 48 25 55 -of GTiff 
H:MSG1_RSS:VIS006:201509230700 VIS006_201509230700.tiff

but that gives empty (no-data) output:

gdalwarp -overwrite -t_srs "+proj=latlong" -te 14 48 25 55 -of GTiff 
H:MSG1_RSS:HRV:201509230700 HRV_201509230700.tiff

However, normal (non-RSS) distribution channel works as a charm:

gdalwarp -overwrite -t_srs "+proj=latlong" -te 14 48 25 55 -of GTiff 
H:MSG3:HRV:201509230700 HRV_201509230700.tiff

Strace output from second command shows that no attempt is made to open
input files, except the prologue and epilogue ones (and the usual scan
of all files with matching timestamp).

using version 1.4, build from svn sources.

error compiling on Fedora 28

internal test server available (makerpm@ventotto)

/bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I.. -I.. -Werror -I/usr/include/gdal   -I/usr/include/gdal   -I/usr/include/gdal  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection  -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c -o xrit/libmsatdrv_la-dataset.lo `test -f 'xrit/dataset.cpp' || echo './'`xrit/dataset.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -Werror -I/usr/include/gdal -I/usr/include/gdal -I/usr/include/gdal -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c xrit/dataset.cpp  -fPIC -DPIC -o xrit/.libs/libmsatdrv_la-dataset.o
xrit/dataset.cpp: In member function 'virtual bool msat::xrit::XRITDataset::init()':
xrit/dataset.cpp:61:23: error: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 8 and 15 [-Werror=format-truncation=]
     snprintf(buf, 20, "%04d-%02d-%02d %02d:%02d:00", tmtime->tm_year+1900, tmtime->tm_mon+1, tmtime->tm_mday, tmtime->tm_hour, tmtime->tm_min);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xrit/dataset.cpp:61:23: note: directive argument in the range [-2147483647, 2147483647]
In file included from /usr/include/stdio.h:862,
                 from /usr/include/gdal/cpl_port.h:137,
                 from /usr/include/gdal/gdal.h:42,
                 from /usr/include/gdal/gdal_priv.h:60,
                 from ../msat/gdal/clean_gdal_priv.h:4,
                 from ../msat/gdal/dataset.h:23,
                 from xrit/dataset.cpp:2:
/usr/include/bits/stdio2.h:64:35: note: '__builtin___snprintf_chk' output between 20 and 63 bytes into a destination of size 20
   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
          ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        __bos (__s), __fmt, __va_arg_pack ());
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:743: xrit/libmsatdrv_la-dataset.lo] Error 1

Compatibility layers of GDAL 3.0 _GetProjectionRef() have been removed in GDAL 3.6

From https://github.com/OSGeo/gdal/blob/master/MIGRATION_GUIDE.TXT:

MIGRATION GUIDE FROM GDAL 3.5 to GDAL 3.6
-----------------------------------------

- Out-of-tree vector drivers:
  * GDALDataset::IBuildOverviews(): parameters panOverviewList and panBandList
    are now of type 'const int*' (previously 'int*')
    Added a CSLConstList papszOptions member.
  * GDALRasterBand::BuildOverviews(): parameter panOverviewList is now of
    type 'const int*' (previously 'int*')
    Added a CSLConstList papszOptions member.
  * Compatibility layers of GDAL 3.0 _GetProjectionRef(), _GetGCPProjectionRef(),
    _SetProjection(), _SetGCPs() have been removed

This means that we should remove all _GetProjectionRef() methods when compiling against GDAL_VERSION_MAJOR > 2 and reimplement GetSpatialRef() because GetSpatialRefFromOldGetProjectionRef() has been removed too.

remove local PublicDecompWT and use public package

PublicDecompWT is now under Apache 2.0 license:
https://gitlab.eumetsat.int/open-source/PublicDecompWT

RPM packaging files have been created (https://github.com/ARPA-SIMC/PublicDecompWT-rpm) and the package is available in simc/stable copr repo.

meteosatlib shoud use the packaged files and remove the internal "decompress" directory.

@spanezz please note:
I didn't match the multiple subdir structure of the old package, all libs are in /usr/lib64/PublicDecompWT/ and all headers in /usr/include/PublicDecompWT (but I can change it if it's a problem)

CentOS7 build error: `class OGRCoordinateTransformation` has no member named `SetEmitErrors`

Full log: https://simc.arpae.it/moncic-ci/meteosatlib/last/master/centos7/build.log

Relevant bit:

 reflectance/pixeltolatlon.cpp: In constructor 'msat::utils::PixelToLatlon::PixelToLatlon(GDALDataset*)':
 reflectance/pixeltolatlon.cpp:21:15: error: 'class OGRCoordinateTransformation' has no member named 'SetEmitErrors'
      toLatLon->SetEmitErrors(false);
                ^
 In file included from reflectance/reflectance.cpp:1:0:
 reflectance/reflectance.h:27:45: warning: missing initializer for member 'std::array<GDALRasterBand*, 12ul>::_M_elems' [-Wmissing-field-initializers]
      std::array<GDALRasterBand*, 12> sources{};
                                              ^
 make[2]: *** [reflectance/libmsatdrv_la-pixeltolatlon.lo] Error 1

Note: if fixing this is time consuming we could evaluate to drop CentOS7 support since all satellite related procedures now run on Rocky Linux 8.

Remove SAFH5 support

Since SAF HDF5 files contain products derived from satellite images but not satellite images, much of what meteosatlib provides over plain GDAL (like sensor channel number) becomes irrelevant.

If plain GDAL is enough for plotting and georeferencing, I would like to remove SAF HDF5 support in Meteosatlib.

I'm opening this issue to track verification of details, and if we have the go ahead, removal of the SAFH5 code.

`gdal-config`: command not found

This message occurs in every build (centos7/rocky8/fedora):

Start: rpmbuild -bs
sh: gdal-config: command not found
sh: gdal-config: command not found
sh: gdal-config: command not found
sh: gdal-config: command not found
sh: gdal-config: command not found
sh: gdal-config: command not found
sh: gdal-config: command not found

Full log: https://download.copr.fedorainfracloud.org/results/simc/stable/epel-8-x86_64/04438391-meteosatlib/builder-live.log.gz

gdal-config seems to be present:

checking for gdal-config... /usr/bin/gdal-config

It's invoked in two separate points, it seems the specfile call is failing:

$ git grep gdal-config
configure.ac:AC_PATH_PROG([GDAL_CONFIG], [gdal-config], [NONE])
configure.ac:        GDAL_PLUGIN_DIRNAME=gdalplugins/$(gdal-config --version | sed -re ['s/([0-9]+\.[0-9]+).+/\1/'])
fedora/SPECS/meteosatlib.spec:%define gdal_pl_version %(gv=$(gdal-config --version); echo ${gv%.*})

class GDALOpenInfo has no member named papszOpenOptions

only with gdal 1.10 (on f20), working with gdal 2.0 (on f24)

should this be problematic we could drop support for gdal < 2.0 starting from meteosatlib 1.8, but I'd prefer mantain backward compatibility if it's possible

libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -Werror -I/usr/include/gdal -I/usr/include/gdal -I/usr/include/gdal -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -std=c++11 -c reflectance/pixeltolatlon.cpp  -fPIC -DPIC -o reflectance/.libs/libmsatdrv_la-pixeltolatlon.o
libtool: compile:  g++ -DHAVE_CONFIG_H -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -std=c++11 -c msatgdalplugin.cpp -o msatgdalplugin.o >/dev/null 2>&1
utils.cpp: In function 'GDALDataset* msat::gdal::add_extras(GDALDataset*, GDALOpenInfo*)':
utils.cpp:17:33: error: 'class GDALOpenInfo' has no member named 'papszOpenOptions'
     int idx = CSLFindName(info->papszOpenOptions, "MSAT_COMPUTE");
                                 ^
utils.cpp:19:45: error: 'class GDALOpenInfo' has no member named 'papszOpenOptions'
     std::string val(CPLParseNameValue(info->papszOpenOptions[idx], nullptr));
                                             ^
make[2]: *** [libmsatdrv_la-utils.lo] Error 1

eccodes support

I've make a small addition to the configure.ac for eccodes support, but it still fails trying to build:

libtool: link: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginS.o  .libs/msatgdalplugin.o  -Wl,--whole-archive ./.libs/libmsatdrv.a -Wl,--no-whole-archive  -Wl,-rpath -Wl,/home/makerpm/rpmbuild/BUILD/meteosatlib-1.8/msat/.libs /home/makerpm/rpmbuild/BUILD/meteosatlib-1.8/msat/.libs/libmsat.so -L/usr/lib64 -lgrib_api -ljasper -lnetcdf_c++ -lnetcdf -lgdal -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o  -O2 -g -fstack-protector-strong -grecord-gcc-switches -m64 -mtune=generic -Wl,-z -Wl,relro   -Wl,-soname -Wl,gdal_Meteosatlib.so.0 -o .libs/gdal_Meteosatlib.so.0.0.0
libtool: link: (cd .libs/libmsat2gdal.lax/libmsatdrv.a && ar x "/home/makerpm/rpmbuild/BUILD/meteosatlib-1.8/gdal/./.libs/libmsatdrv.a")
libtool: link: ar cru .libs/libmsat2gdal.a .libs/msat2gdal.o   .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-base.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-cos_sol_za.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-dataset.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-grib.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-jday.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-netcdf.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-netcdf24.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-pixeltolatlon.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-rasterband.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-reflectance.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-sat_za.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-utils.o .libs/libmsat2gdal.lax/libmsatdrv.a/libmsatdrv_la-xrit.o .libs/libmsat2gdal.lax/libmsatdrv.a/lt1-libmsatdrv_la-utils.o 
libtool: link: ranlib .libs/libmsat2gdal.a
libtool: link: rm -fr .libs/libmsat2gdal.lax
/usr/bin/ld: cannot find -lgrib_api
collect2: error: ld returned 1 exit status
make[2]: *** [gdal_Meteosatlib.la] Error 1

test server: makerpm@sette
build dir: /home/makerpm/rpmbuild/BUILD/meteosatlib-1.8

(on a separate note: I'm escalating eccodes support from "enhancement" to "bug" since we're up with new eccodes-based systems)

format-overflow errors on fedora

Impacts on f30/f31/f32

full logs:

https://travis-ci.org/github/ARPA-SIMC/meteosatlib/builds/692600831

relevant bit:

In file included from grib/grib.cpp:2:
In function 'void msat::grib::checked(int, const char*, const char*)',
    inlined from 'long int msat::grib::Grib::get_long_oneof(const char*, ...)' at grib/utils.h:202:16:
grib/utils.h:35:21: error: '%s' directive argument is null [-Werror=format-overflow=]
   35 |             CPLError(CE_Failure, CPLE_AppDefined, "%s %s: %s", func, context, grib_get_error_message(error));
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'void msat::grib::checked(int, const char*, const char*)',
    inlined from 'double msat::grib::Grib::get_double_oneof(const char*, ...)' at grib/utils.h:244:16:
grib/utils.h:35:21: error: '%s' directive argument is null [-Werror=format-overflow=]
   35 |             CPLError(CE_Failure, CPLE_AppDefined, "%s %s: %s", func, context, grib_get_error_message(error));
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'void msat::grib::checked(int, const char*, const char*)',
    inlined from 'void msat::grib::Grib::set_long_oneof(const char*, long int, ...)' at grib/utils.h:285:16:
grib/utils.h:35:21: error: '%s' directive argument is null [-Werror=format-overflow=]
   35 |             CPLError(CE_Failure, CPLE_AppDefined, "%s %s: %s", func, context, grib_get_error_message(error));
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()',
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()' at grib/grib.cpp:310:18:
grib/grib.cpp:316:21: error: '%s' directive argument is null [-Werror=format-overflow=]
  316 |             CPLError(CE_Failure, CPLE_AppDefined, "GRIB for satellites requires a " SRS_PT_GEOSTATIONARY_SATELLITE " projection, but we have %s", stype);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()',
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()' at grib/grib.cpp:310:18,
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB1::create()' at grib/grib.cpp:778:32:
grib/grib.cpp:316:21: error: '%s' directive argument is null [-Werror=format-overflow=]
  316 |             CPLError(CE_Failure, CPLE_AppDefined, "GRIB for satellites requires a " SRS_PT_GEOSTATIONARY_SATELLITE " projection, but we have %s", stype);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()',
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()' at grib/grib.cpp:310:18,
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB2::create()' at grib/grib.cpp:604:32:
grib/grib.cpp:316:21: error: '%s' directive argument is null [-Werror=format-overflow=]
  316 |             CPLError(CE_Failure, CPLE_AppDefined, "GRIB for satellites requires a " SRS_PT_GEOSTATIONARY_SATELLITE " projection, but we have %s", stype);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()',
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()' at grib/grib.cpp:310:18,
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB1::create()' at grib/grib.cpp:778:32,
    inlined from 'GDALDataset* msat::grib::GRIBCreateCopy(const char*, GDALDataset*, int, char**, GDALProgressFunc, void*)' at grib/grib.cpp:847:26:
grib/grib.cpp:316:21: error: '%s' directive argument is null [-Werror=format-overflow=]
  316 |             CPLError(CE_Failure, CPLE_AppDefined, "GRIB for satellites requires a " SRS_PT_GEOSTATIONARY_SATELLITE " projection, but we have %s", stype);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()',
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB::create()' at grib/grib.cpp:310:18,
    inlined from 'virtual bool msat::grib::{anonymous}::CreateGRIB1::create()' at grib/grib.cpp:778:32,
    inlined from 'GDALDataset* msat::grib::GRIBCreateCopy(const char*, GDALDataset*, int, char**, GDALProgressFunc, void*)' at grib/grib.cpp:844:26:
grib/grib.cpp:316:21: error: '%s' directive argument is null [-Werror=format-overflow=]
  316 |             CPLError(CE_Failure, CPLE_AppDefined, "GRIB for satellites requires a " SRS_PT_GEOSTATIONARY_SATELLITE " projection, but we have %s", stype);
      |             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:732: grib/libmsatdrv_la-grib.lo] Error 1

install: cannot stat './msat-view.1': No such file or directory

after #27 make install fails trying to install msat-view manpage:

./regenerate-msat-manpage
help2man: can't get `--version' info from ./msat-view
Try `--no-discard-stderr' if option outputs to stderr
 /usr/bin/mkdir -p '/root/rpmbuild/BUILDROOT/meteosatlib-1.13-1.x86_64/usr/share/man/man1'
 /usr/bin/install -p -m 644 msat.1 ./msat-view.1 '/root/rpmbuild/BUILDROOT/meteosatlib-1.13-1.x86_64/usr/share/man/man1'
install: cannot stat './msat-view.1': No such file or directory
make[2]: *** [Makefile:1042: install-man1] Error 1
make[2]: Leaving directory '/root/rpmbuild/BUILD/meteosatlib-master/tools'
make[1]: *** [Makefile:1182: install-am] Error 2

see also:
https://travis-ci.org/github/ARPA-SIMC/meteosatlib/jobs/744214274#L2310

Istallation instructions are incomlete/misleading

This issue ha two sub-issues:
(i) README.md states that git checkout --recurse-submodules is suitable to get the sources and PublicDecompWT. This does not work for me. If I git clone https://github.com/ARPA-SIMC/meteosatlib.git and the change to directory meteosatlib, the command git checkout --recurse-submodules just returns head/master is up to date. Hence I would recommed writing:
"Use git clone --recurse-submodules https://github.com/ARPA-SIMC/meteosatlib.git to obtain the sources."
(iI) README.md and INSTALL both state that the sequence ./configure and make would build the binaries, which doesn't work since there is no file named configure. To build this the command autoreconf autoreconf -ifv is needed, as can be seen in .travis-build.sh, which is not obvious for the average adressee of the installation instructions. I suggest two possible solutions here, a) distribute a configure script file or b) expand the instructions, accordingly.

Rewrite grib implementation

Rewrite grib encoding:

  • adding grib2 support (template 4.32 - suggestion 15/10/2013)
  • adding the possibility to compute reflectivity values from grib

problema riproiezione gdal su F28

(Disclaimer: non è chiaro in questa fase se sia un bug di meteosatlib o di gdal)

Lo stesso comando di riproiezione da HRIT a geoTiff genera risultati diversi (errati su f28):

gdalwarp -q -of 'GTiff' -t_srs '+proj=utm +zone=32 +datum=WGS84' -te 310000 3920000 1314000 5224000 /autofs/scratch2/dbranchini/ricalcolo_indici/20171230/H:MSG3:VIS006r:201712301000 Vis006r24.tif

allegato dataset:
201712301000.tar.gz

e tiff finali con log (nota interessante: il log di f24 è sensibilmente più corto):
tif_e_log.tar.gz

MSG4 Meteosat11 files conversion to GRIB

Buongiorno,
questo issue è per tracciare le modifiche e le discussioni in merito all'elaborazione dei file MSG4 e successiva conversione in GRIB.
Da stato dell'arte, è stato effettuato già un tentativo di conversione di un file MSG4. Potreste postare qui in risposta la stringa esatta dell'errore ricevuto? Il test di conversione è stato provato da riga di comando? Se si potreste postare il comando lanciato con i relativi parametri?
Grazie della vostra disponibilità.

add CI files

Once #14 is fixed it will be possible to add Travis CI files and distribute meteosatlib in the simc/stable copr repo

[Fedora 24] misleading indentation in grib/grib.cpp

libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -Werror -I/usr/include/gdal -I/usr/include/gdal -I/usr/include/gdal -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -c grib/grib.cpp  -fPIC -DPIC -o grib/.libs/libmsatdrv_la-grib.o
/bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I.. -I.. -Werror -I/usr/include/gdal   -I/usr/include/gdal   -I/usr/include/gdal  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic  -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -c -o netcdf/libmsatdrv_la-utils.lo `test -f 'netcdf/utils.cpp' || echo './'`netcdf/utils.cpp
grib/grib.cpp: In constructor 'msat::grib::GRIBRasterBand::GRIBRasterBand(msat::grib::GRIBDataset*, int)':
grib/grib.cpp:162:5: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
     if (!grib.get_long_ifexists("channelNumber", &channel_id))
     ^~
grib/grib.cpp:172:2: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
  char buf[25];
  ^~~~
libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -Werror -I/usr/include/gdal -I/usr/include/gdal -I/usr/include/gdal -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -c netcdf/utils.cpp  -fPIC -DPIC -o netcdf/.libs/libmsatdrv_la-utils.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -Werror -I/usr/include/gdal -I/usr/include/gdal -I/usr/include/gdal -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -Wall -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -c netcdf/utils.cpp -o netcdf/libmsatdrv_la-utils.o >/dev/null 2>&1
cc1plus: all warnings being treated as errors
Makefile:669: recipe for target 'grib/libmsatdrv_la-grib.lo' failed
make[2]: *** [grib/libmsatdrv_la-grib.lo] Error 1

'class GDALOpenInfo' has no member named 'papszOpenOptions' in utils.cpp

(on Fedora 20)

/bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I.. -I.. -Werror -I/usr/include/gdal   -I/usr/include/gdal   -I/usr/include/gdal  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic  -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -std=c++11 -c -o reflectance/libmsatdrv_la-base.lo `test -f 'reflectance/base.cpp' || echo './'`reflectance/base.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -I.. -I.. -Werror -I/usr/include/gdal -I/usr/include/gdal -I/usr/include/gdal -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -std=c++11 -c reflectance/base.cpp  -fPIC -DPIC -o reflectance/.libs/libmsatdrv_la-base.o
utils.cpp: In function 'GDALDataset* msat::gdal::add_extras(GDALDataset*, GDALOpenInfo*)':
utils.cpp:14:33: error: 'class GDALOpenInfo' has no member named 'papszOpenOptions'
     int idx = CSLFindName(info->papszOpenOptions, "MSAT_COMPUTE");
                                 ^
utils.cpp:16:45: error: 'class GDALOpenInfo' has no member named 'papszOpenOptions'
     std::string val(CPLParseNameValue(info->papszOpenOptions[idx], nullptr));
                                             ^
make[2]: *** [libmsatdrv_la-utils.lo] Error 1

problem generating products with python

/usr/share/doc/meteosatlib-gdal/products -t 202002231200 -s . -d /tmp/products/ --warp='-t_srs "+proj=latlong" -te -10 30 30 60' --cachedir=/tmp/products/cache/
Traceback (most recent call last):
File "/usr/share/doc/meteosatlib-gdal/products", line 842, in
sat.make_product(prod, opts.format, opts.shp, destdir=opts.destdir)
File "/usr/share/doc/meteosatlib-gdal/products", line 226, in make_product
res = maker.compute()
File "/usr/share/doc/meteosatlib-gdal/products", line 279, in compute
ir16r = self.sat.IR_016.reflectance
File "/usr/share/doc/meteosatlib-gdal/products", line 102, in reflectance
data = super(MaskedChannelMixin, self).reflectance
File "/usr/share/doc/meteosatlib-gdal/products", line 74, in reflectance
self.cached_refl = self.sat.get_array(self.name + "r")
File "/usr/share/doc/meteosatlib-gdal/products", line 162, in get_array
ds = self.gdal_dataset(channel)
File "/usr/share/doc/meteosatlib-gdal/products", line 149, in gdal_dataset
for line in stderr.split("\n"):
TypeError: a bytes-like object is required, not 'str'

Reimplement calculation of reflectance from non-HRIT datasets

The previous prototype implementation was removed in 42796f4 due to GDAL issue 5989 that caused it not to work from GDAL 3.4 onwards.

Since this has never gone into production, the easy fix for #29 was to remove the prototype implementation, and postpone redesigning this feature until there is a new demand for it. At that point we can reassess our options, based on the status of GDAL and an updated analysis of production needs.

Until then, this issue can act as background information, with a link to the previous implementation and to its related GDAL issue.

`make dist` fails without prior `make`

$ make dist
make  dist-gzip am__post_remove_distdir='@:'
make[1]: Entering directory '/scratch/dbranchini/git/meteosatlib'
if test -d "meteosatlib-1.9"; then find "meteosatlib-1.9" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "meteosatlib-1.9" || { sleep 5 && rm -rf "meteosatlib-1.9"; }; else :; fi
test -d "meteosatlib-1.9" || mkdir "meteosatlib-1.9"
 (cd decompress && make  top_distdir=../meteosatlib-1.9 distdir=../meteosatlib-1.9/decompress \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[2]: Entering directory '/scratch/dbranchini/git/meteosatlib/decompress'
make[2]: Leaving directory '/scratch/dbranchini/git/meteosatlib/decompress'
 (cd msat && make  top_distdir=../meteosatlib-1.9 distdir=../meteosatlib-1.9/msat \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[2]: Entering directory '/scratch/dbranchini/git/meteosatlib/msat'
make[2]: Leaving directory '/scratch/dbranchini/git/meteosatlib/msat'
 (cd gdal && make  top_distdir=../meteosatlib-1.9 distdir=../meteosatlib-1.9/gdal \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[2]: Entering directory '/scratch/dbranchini/git/meteosatlib/gdal'
make[2]: Leaving directory '/scratch/dbranchini/git/meteosatlib/gdal'
 (cd tools && make  top_distdir=../meteosatlib-1.9 distdir=../meteosatlib-1.9/tools \
     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[2]: Entering directory '/scratch/dbranchini/git/meteosatlib/tools'
depbase=`echo msat.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H   -I.. -I.. -I/usr/include/gdal -I/usr/include/ImageMagick-6 -fopenmp -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16   -Werror -g -O2  -Wall -g -O2 -MT msat.o -MD -MP -MF $depbase.Tpo -c -o msat.o msat.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo image.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H   -I.. -I.. -I/usr/include/gdal -I/usr/include/ImageMagick-6 -fopenmp -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16   -Werror -g -O2  -Wall -g -O2 -MT image.o -MD -MP -MF $depbase.Tpo -c -o image.o image.cpp &&\
mv -f $depbase.Tpo $depbase.Po
make[2]: *** No rule to make target '../msat/libmsat.la', needed by 'msat'.  Stop.
make[2]: Leaving directory '/scratch/dbranchini/git/meteosatlib/tools'
make[1]: *** [Makefile:606: distdir] Error 1
make[1]: Leaving directory '/scratch/dbranchini/git/meteosatlib'
make: *** [Makefile:702: dist] Error 2

Fedora 36 build errored: field `sources` has incomplete type `std::array<GDALRasterBand*, 12>`

This happens only in fedora 36 builds (gdal 3.4.3)

Full log:
https://download.copr.fedorainfracloud.org/results/simc/stable/fedora-36-x86_64/04438391-meteosatlib/builder-live.log.gz
or
https://simc.arpae.it/moncic-ci/meteosatlib/202205240728/master/fedora36/build.log

Relevant bit:

make[2]: Entering directory '/builddir/build/BUILD/meteosatlib-1.14-3/gdal'
/bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H    -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  	 -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection  -Wall -Wextra -Wno-unused-parameter -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  	 -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c -o msatgdalplugin.lo msatgdalplugin.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wall -Wextra -Wno-unused-parameter -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c msatgdalplugin.cpp  -fPIC -DPIC -o .libs/msatgdalplugin.o
In file included from msatgdalplugin.cpp:27:
reflectance/reflectance.h:26:37: error: field 'sources' has incomplete type 'std::array<GDALRasterBand*, 12>'
   26 |     std::array<GDALRasterBand*, 12> sources{};
      |                                     ^~~~~~~
In file included from /usr/include/c++/12/bits/unique_ptr.h:36,
                 from /usr/include/c++/12/memory:76,
                 from /usr/include/gdal/cpl_minixml.h:192,
                 from /usr/include/gdal/gdal.h:49,
                 from /usr/include/gdal/gdal_priv.h:60,
                 from reflectance/base.h:4,
                 from reflectance/reflectance.h:4:
/usr/include/c++/12/tuple:1595:45: note: declaration of 'struct std::array<GDALRasterBand*, 12>'
 1595 |   template<typename _Tp, size_t _Nm> struct array;
      |                                             ^~~~~
make[2]: *** [Makefile:686: msatgdalplugin.lo] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/meteosatlib-1.14-3/gdal'

"ValueError" with latest `products` script

Tried with test data available here: https://github.com/ARPA-SIMC/qc_sample_data/tree/master/satellite/hrit

$ /home/branco/git/meteosatlib/examples/products -t 202002231200 -s /home/branco/buttami/qc_sample_data/satellite/hrit/ --warp='-t_srs "+proj=latlong" -te -10 30 30 60' -d ../ --cachedir=/tmp/ --msat=MSG4
Traceback (most recent call last):
  File "/home/branco/git/meteosatlib/examples/products", line 883, in <module>
    sat.make_product(prod, args.format, args.shp, destdir=args.destdir)
  File "/home/branco/git/meteosatlib/examples/products", line 252, in make_product
    res = maker.compute()
  File "/home/branco/git/meteosatlib/examples/products", line 723, in compute
    return upscaledr * hrvnorm, upscaledg * hrvnorm, upscaledb * hrvnorm
ValueError: operands could not be broadcast together with shapes (716,955) (2105,2806)

Fedora 36 build error: field `sources` has incomplete type `std::array<GDALRasterBand*, 12>`

Full log: https://simc.arpae.it/moncic-ci/meteosatlib/202206061253/master/fedora36/build.log

Relevant bit:

make[2]: Entering directory '/root/rpmbuild/BUILD/meteosatlib/gdal'
/bin/sh ../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H    -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection  -Wall -Wextra -Wno-unused-parameter -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c -o msatgdalplugin.lo msatgdalplugin.cpp
libtool: compile:  g++ -DHAVE_CONFIG_H -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -Wall -Wextra -Wno-unused-parameter -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -c msatgdalplugin.cpp  -fPIC -DPIC -o .libs/msatgdalplugin.o
make[2]: Leaving directory '/root/rpmbuild/BUILD/meteosatlib/gdal'
In file included from msatgdalplugin.cpp:27:
reflectance/reflectance.h:26:37: error: field 'sources' has incomplete type 'std::array<GDALRasterBand*, 12>'

missing python3 interpreter check

Since the script tools/regenerate-msat-manpage feeds help2man with python3 scripts and fails with a quite cryptic message if the python3 interpreter is missing, it would be useful either adding a check on python3 interpreter in the configure.ac or a more explicit warning in the script itself.

msat-view: no module named 'gobject'

$ msat-view H-000-MSG3__-MSG3_RSS____-WV_062___-000007___-202011161255-C_
Traceback (most recent call last):
  File "/usr/bin/msat-view", line 404, in <module>
    start_app()
  File "/usr/bin/msat-view", line 26, in start_app
    import gobject
ModuleNotFoundError: No module named 'gobject'

both python3-gobject and python3-gobject-base are present on the system.

fix "format-truncation" and "format-overflow" errors (gcc 8.3.1)

e.g.:

xrit/dataset.cpp: In member function 'virtual bool msat::xrit::XRITDataset::init()':
xrit/dataset.cpp:61:23: error: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 8 and 15 [-Werror=format-truncation=]
     snprintf(buf, 20, "%04d-%02d-%02d %02d:%02d:00", tmtime->tm_year+1900, tmtime->tm_mon+1, tmtime->tm_mday, tmtime->tm_hour, tmtime->tm_min);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xrit/dataset.cpp:61:23: note: directive argument in the range [-2147483647, 2147483647]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.