{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Smoke from forest fires and saharan dust seen with VIIRS on Suomi NPP

\n", "

On October 17, 2017, an air mass with a heavy load of particles and gases stemming from extensive and devastating forest/grass fires on the Iberian Peninsula reached Northern Europe. Probably the same air mass also caried a significant amount of saharan dust from outbreaks from Western Africa a few days earlier.

\n", "

The dirty air mass is clearly seen with the VIIRS sensor after correcting for the atmospheric background signal. Pyspectral enables correction of Rayleigh scattering by the background (climatological) atmospheric atoms and absorption by aerosols.\n", "

" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from glob import glob\n", "from satpy.scene import Scene\n", "scn = Scene(\n", " filenames=glob(\"/data/lang/proj/safworks/adam/oktober17smoke/npp/lvl1/npp_20171017_1216_30945/*\"),\n", " reader='viirs_sdr')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Load the SDR data

\n", "

Now load the SDR data needed to generate a pan sharpened (using the I1 band) True Color RGB.\n", "
\n", " Here pyspectral is being used to do the atmospheric correction.

" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "No handlers could be found for logger \"satpy.scene\"\n" ] } ], "source": [ "scn.load(['true_color'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Resample the data onto a map-projected area

\n", "

Here we resample the data onto a cartographic map-projection. We use a predefined area called eurol. For this pyresample and pykdtree are used.\n", "

" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "newscn = scn.resample('europe2km')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Show the image

\n", "So, now it is time to show the image using trollimage. We also add coastlines and political borders with pycoast." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/a000680/usr/src/satpy/satpy/enhancements/__init__.py:51: RuntimeWarning: invalid value encountered in log10\n", " np.log10(chn.data, out=chn.data)\n" ] } ], "source": [ "newscn.show('true_color', overlay={'coast_dir': '/home/a000680/data/shapes/', 'color': (255, 140, 100)})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.5" } }, "nbformat": 4, "nbformat_minor": 2 }