I working with geoprocessing and one of my recent works has been to study alternatives ways to process files of the European EUMETCast.
According to wikipedia, "EUMETCast is a scheme for Dissemination of various (Mainly satellite based) meteorological data operated by EUMETSAT, the European Organisation for the Exploitation of Meteorological Satellites. The main purpose is the Dissemination of EUMETSAT's own data, but various data from other providers are broadcast as well. ". My work has been primarily with the data from the weather satellite Meteosat 9.
Data from the Meteosat9 are received in a season Eumetsat in Italy, sent via fiber to Germany where they are pre-processed and sent to the satellite system EUMETCast for redistribution. The data stream is encoded in MPEG2 DVB-S, allowing a low cost in receiving stations (just an antenna, a DVB-S video capture card and microcomputer)
Even stations being inexpensive, still need at least two computers in this system: one for receiving data and one for processing images, and Meteosat are sent from 15 to 15 minutes. Besides the cost of the computer itself as yes, we still have the cost of electric power and eventually cooling the environment.
Despite the high volume processing required, I decided to try the Raspberry for this function, with one caveat: the signal is encrypted and can only be read using a software from Eumetsat and whose version runs only on Linux x86. So for now I'm using the Raspberry for processing the images, leaving the reception itself to an x86 machine.
The basic flow of my process is:
a) A Python routine checks if there a new packet on a is a specific directory . Aa packet consists of a file .PRO (prologue), multiple data files and a file .EPI (epilogue). When arrived the file. epi, I know that a packet of data was downloaded. New data is moved to a temporary directory.
b) Another routine in Python runs xRITDECOMPRESS utility to unpack the satellite images. This utility is open source (under license) by Eumetsat, then I could recompile it for ARM platform.
c) From the uncompressed data, I processing the images using MPOP (https://github.com/mraspaud/mpop). That part was harder to configure because I needed to resolve a series of dependencies (numpy, scipy, pyproj, etc.)
d) Finally, I reprojection the images (which are in Geostationary Satellite View http://trac.osgeo.org/proj/wiki/proj%3Dgeos projection) to EQC projection (http://en.wikipedia.org/ wiki / Equirectangular_projection) and generate a Geotiff and a jpeg image for each.
"Image" in this case, is meant a product like "Cloud top highlight," "Water vapor images", "Infrared Image", etc.
The time to process each image in Raspberry is around 5 minutes, considering the copy of raws, raws of decompression, processing, and generation of reprojection GeoTIFFs and jpegs. I believe that most of the time is consumed in i / o.
The 256 Mb of RAM Raspberry are not enough to process the images and need to use swap memory.
I believe that with a Raspberry 512MB, swap is no longer needed and processing time is significantly reduced.
I presented recently this work in a Meteorology event in Brazil and many of presentes saw a great potential for using Raspberry in this processing, especially in remote areas. The Meteosat 9 is fixed position in geostationary orbit at 0deg longitude, 35,800 kilometers above the Gulf of Guinea, it is extremely useful for African agriculture. Considering the low cost solution with Raspberry, this is a great possibility to facilitate the dissemination of images of the Eumetsat system in this continent.
Through some contacts I'm looking for the possibility of Eumetsat release a ARM version of receiving software, thus we have a solution for receiving and processing 100% Raspberry.
Sample image generated with Raspberry PI: