0% found this document useful (0 votes)
66 views8 pages

Python PyTroll

Introductiın od PyTroll of Python

Uploaded by

Funda Yılmaz
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
66 views8 pages

Python PyTroll

Introductiın od PyTroll of Python

Uploaded by

Funda Yılmaz
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 8

TOOLS

PyTroll
An Open-Source, Community-Driven Python Framework to
Process Earth Observation Satellite Data
Martin R aspaud, David Hoese, Adam Dybbroe, Panu Lahtinen, Abhay Devasthale,
Mikhail Itkin, Ulrich Hamann, Lars Ørum R asmussen, Esben Stigård Nielsen, Thomas Leppelt,
Alexander Maul, Christian Kliche, and Hrobjartur Thorsteinsson

Over the last few decades, there has been a rapid of satellite data and ever-evolving user requirements.
increase in both the amount and diversity of Earth The users are more diversified than ever and include
Observation (EO) satellite data. Much of these data forecasters, decision-makers, and other end users.
are assimilated to improve numerical weather predic- To achieve a durable satellite processing system
tion (NWP) (Rabier 2005), while a significant portion supporting highly specialized nowcasting products,
are tailored for nowcasting and early warning. Today’s we argue the need for an open and resilient software
society and global economy is more vulnerable than platform that is able to both quickly adapt to new
yesterday’s to weather and environmental disasters data sources and respond efficiently to new and often
(e.g., floods, forest fires, desert dust, volcanic erup- unexpected user needs. Furthermore, open-source
tions). Consequently, there is a growing public de- development stimulates international collaboration,
mand for early and accurate forecasts and warnings which is a necessity given that there are often rather
to be able to react quickly and minimize damage to limited resources on the national level to operate and
the economy and society. maintain a 24/7 production system under the very
Real-time 24/7 satellite processing systems like demanding conditions outlined above.
those being operated at the national weather services This has been the motivation for the develop-
are being challenged by a steady increase in the amount ment of the Python-based open software framework,
PyTroll (http://pytroll.org), originally started in 2009
as a collaboration between the Danish Meteorologi-
AFFILIATIONS: R aspaud, Dybbroe, and D evasthale — Swedish
Meteorological and Hydrological Institute, Norrköping, Sweden; cal Institute (DMI) and the Swedish Meteorological
Hoese —Space Science and Engineering Center (SSEC), University and Hydrological Institute (SMHI).1 Python was the
of Wisconsin—Madison, Madison, Wisconsin; L ahtinen —Finnish programming language of choice for several reasons.
Meteorological Institute (FMI), Helsinki, Finland; Itkin —Norwe- Python is a widely used, free, and open-source inter-
gian Polar Institute (NPI), Tromsø, Norway; Hamann —Federal active programming language. It allows for a flexible
Office of Meteorology and Climatology (MeteoSwiss), Locarno- bottom-up and fast software development cycle, and
Monti, Switzerland; R asmussen —Danish Meteorological Institute
both SMHI and DMI have had a long tradition of using
(DMI), Copenhagen, Denmark; Nielsen —Think Big Analytics, Co-
penhagen, Denmark; Leppelt and Maul—Deutscher Wetterdienst
Python in operational remote sensing. It is now more
(DWD), Offenbach am Main, Germany; Kliche —EBP Deutschland common to see Python being used as an end-to-end
GmbH, Berlin, Germany; Thorsteinsson —Videntifier Technolo- solution with today’s comprehensive standard library
gies ehf, Reykjavik, Iceland and mature support for optimized numerical and
CORRESPONDING AUTHOR: Martin Raspaud, scientific computations (Lin 2012). With tools like
martin.raspaud@smhi.se Cython, Numexpr, and PyPy, a system built purely
DOI:10.1175/BAMS-D-17-0277.1 upon the Python ecosystem often competes well in
A supplement to this article is available online (10.1175/BAMS-D-17-0277.2).
performance with solutions based on compiled lan-
guages, while preserving its flexibility and ease of use.
©2018 American Meteorological Society
For information regarding reuse of this content and general copy- 1
The historical evolution of the PyTroll code base can be seen
right information, consult the AMS Copyright Policy.
in this video: https://youtu.be/tZcKpB6yPWo.

AMERICAN METEOROLOGICAL SOCIETY JULY 2018 | 1329


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
PyTroll, being open source and freely available that allows derivation of fundamental climate data
on the web from its beginning, has fostered inter- record from the historical sensors. Prospective PyTroll
national cooperation so that today it encompasses users are welcome to ask questions on Slack (https://
a truly worldwide community. This collaboration is pytroll.slack.com/; get an invitation here: https://
stimulated via biannual PyTroll 5-day code sprints, pytrollslackin.herokuapp.com/) or send an e-mail to the
where both developers and users contribute. PyTroll is PyTroll mailing list (https://groups.google.com/group
currently being used operationally in about one-third /pytroll). The potential contributors can download
of the EUMETSAT member states, including the na- the PyTroll code on Github, and after adding their
tional meteorological services of Denmark, Norway, own features of interest or modifying the existing
Sweden, Finland, Germany, Switzerland, Italy, Esto- ones, they can make issues or pull requests as needed.
nia, and Latvia. While PyTroll was originally devel-
oped to cater to the needs of the atmospheric remote LOAD, PROCESS, AND DISPLAY. A rather
sensing community, it is equally suitable for land, common requirement in Earth sciences is to read
ocean, or hydrology applications of EO data. PyTroll radiance data; perform calibration, geolocation, and
supports processing of a great number of current and resampling; and then generate an image for display.
past EO satellites, including the recent Copernicus All of this is handled in a unified manner in PyTroll
Sentinel programs of the European Space Agency via the high-level package SatPy. SatPy currently sup-
(ESA), NOAA’s GOES-16, the joint NOAA–NASA ports a wealth of different input formats (http://satpy
JPSS-1 (NOAA-20), and JMA’s Himawari 8 and 9. .readthedocs.io/en/latest/) for various EO satellite
By providing small stand-alone packages, PyTroll instruments and advanced processing algorithms.
attempts to provide as much freedom to the user as The SatPy package is easily installed in existing
possible while still providing a large array of available Python environments with pip install satpy on the
features. Users are then free to develop their own cus- command-line. SatPy allows users to perform the
tomized systems. For example, the Community Sat- data processing without any additional configuration.
ellite Processing Package (CSPP) Polar2Grid project Methods on how to read input files, generate RGB
(www.ssec.wisc.edu/software/polar2grid/), created image composites, and other necessary processing are
by the Space Science and Engineering Center (SSEC) all provided in the configuration that comes with the
at the University of Wisconsin, provides a simple package. SatPy makes it easy for complex correction
command line interface to the features provided by or composite algorithms to work across multiple sen-
PyTroll packages in a free and open-source all-in-one sors by providing a flexible set of metadata for each
installation. By doing this, Polar2Grid lets users un- dataset. Metadata includes dataset name, wavelength,
familiar with programming, Python environments, calibration, satellite name, and observation start and
or certain satellite image processing techniques end times, among other information. Algorithms
produce atmospherically corrected, high-resolution, can be configured to request datasets by wavelength,
high-contrast imagery. rather than by name, which allows one specification
A summary overview of all PyTroll packages, their to work for multiple sensors.
interdependencies, level of maturity, and known To generate an image, as shown in Fig. 1, it is
operational usage is listed on the PyTroll home page necessary to calibrate the raw data to reflectances,
(http://pytroll.github.io/pytroll_packages_overview normalize illumination using solar zenith angle,
.html). Here the readers also find various code ex- and reduce the effect of Rayleigh scattering from
amples using PyTroll (https://nbviewer.jupyter.org the visual bands. SatPy is able to do all this with the
/github/pytroll/pytroll-examples/tree/master/). In help of other PyTroll packages like PySpectral and
the following sections we highlight the main capa- PyOrbital, which are automatically installed with
bilities of PyTroll packages. We begin by describing the aforementioned pip command. The data may
the SatPy package that is central to PyTroll and most be resampled to a cartographic map projection and
frequently used, followed by describing packages that displayed as an image or stored to a file on disk. SatPy
support satellite data acquisition and sharing in real supports writing to Network Common Data Form
time in the most efficient manner. A suite of utilities Climate and Forecast (netCDF/CF) and various im-
available to facilitate 24/7 data production from re- age formats, including GeoTIFF and PNG. The left
ception to Level 2 product generation are presented column of Fig. 1 illustrates a typical SatPy use case
in the next section. Finally, we introduce a package of generating a so-called true-color RGB composite,

1330 | JULY 2018


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
Fig. 1. (left) The code to generate a ratio-sharpened true-color image with an overlay of coastlines and political
borders. The sharpening is achieved by multiplying the low-resolution green and blue channels by the ratio of
the high-resolution red channel and its lower-resolution counterpart (Gumley et al. 2003). This ratio-sharpening
technique is available in SatPy and can be used for any sensor with both low- and high-resolution bands. This code
example is available as a Jupyter notebook document on Github: https://github.com/pytroll/pytroll-examples/blob
/master/satpy/viirs_smoke.ipynb. The example code above took 105 s to execute on a laptop running RedHat En-
terprise Linux version 7, with a dual core hyperthreaded processor [Intel(R) Core(TM) i7–4600U CPU @ 2.10GHz]
and 16 GB RAM (DDR3 1600Mhz) and using local SDD storage (256GB SanDisk SD7TB3Q). The ratio-sharpened
true color requires more memory and is slower to run due to the higher-resolution data used. The low-resolution
true color using only the M-bands take 43 s to generate on the same machine. (right) The code to load two
Meteosat SEVIRI channels based on their wavelength in micrometers.

resampling it, and displaying it on-screen. A true- Spinning Enhanced Visible and Infrared Imager
color image is obtained by combining a red, a green, (SEVIRI) channels by wavelength.
and a blue visible wavelength band, for example, Once data have been loaded, calibrated, geore-
with the Visible and Infrared Imaging Radiometer ferenced, and atmospherically corrected, the data
Suite (VIIRS) instrument on board the Suomi NPP are resampled from the native satellite projection
and JPSS satellites, that would be, respectively, the to a custom grid. This is illustrated in Python code
M4 (or I1), M3, and M2 bands. The right column of in Fig. 1 with newscn = scn.resample(‘eurol’). All
Fig. 1 illustrates another use case with loading two SatPy resampling functionality comes from the

AMERICAN METEOROLOGICAL SOCIETY JULY 2018 | 1331


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
PyResample package, which provides a fast gen- single antenna station is available to the others, we
eralized interface for resampling geolocated data. take advantage of the multiple stations to optimally
The PyTroll Python-geotiepoints package allows schedule the reception of as many satellites as pos-
interpolation of geolocation information in the case sible. Pytroll-Schedule needs information on the
when the level 1 data only contain geolocation on position of the satellites relative to an observer on
a grid of tie points. PyResample utilizes a custom the ground (given by the location of the antenna).
k-dimensional (k-d) tree algorithm implementation This can be determined with the use of PyOrbital.
provided by the PyKDTree package. The k-d tree It allows computation of the position of a satellite in
nearest neighbor search algorithm (Bentley 1975) space at a given time through the use of Two-Line
implemented in PyKDTree is highly efficient due to Element (TLE) sets and the SGP4 algorithm that has
its use of Cython and OpenMP, and it is faster than been implemented in Python from the original work
the Scipy and libann (www.cs.umd.edu/~mount of Vallado et al. (2006).
/ANN/) packages. Other resampling methods Exchanging polar satellite data in real time
included in PyResample are the Bilinear Interpola- from several antennas connected over the Internet
tion and the Elliptical Weighted Average methods. is a challenge that PyTroll tries to address with the
Finally, adding coastlines and political borders to Trollcast package. Trollcast is loosely based on the
the image can be done using the PyCoast package. concept of the BitTorrent protocol (Cohen 2008),
By default, PyCoast uses vector data from the Global with dissemination of small packages of data upon
Self-consistent, Hierarchical, High-resolution Geog- request. This means the raw satellite data are split
raphy (GSHHG) Database provided by the National into small chunks—typically a single scanline or a
Oceanic and Atmospheric Administration (NOAA). unit packet—that can be uniquely identified. These

SHARING DIRECT READ-


OUT DATA IN REAL TIME.
Prior to reading, the satellite
data needs to be retrieved and
stored locally. PyTroll provides
dedicated tools supporting data
acquisition, namely Pytroll-
Schedule, Trollcast, Posttroll, and
Trollmoves.
The Pytroll-Schedule package
provides a means of computing
an optimized reception sched-
ule for polar-orbiting satellite
overpasses seen from single
or multiple direct-readout sta-
tions. Given a single-station po-
sition, an area of interest, a list of
satellites, and a weight assigned
to each satellite, the scheduler
process computes all the possible
overpasses for the satellites over the
station before choosing the sequence
of overpasses that optimizes the coverage
over the area of interest (examples are shown
in Fig. 2 and in the online supplementary figure at
https://doi.org/10.1175/BAMS-D-17-0277.2). Pytroll- Fig. 2. One hour of passes, covering the interest area
Schedule also has the capability to plan the reception depicted in red dashes. Solid lines are the passes cho-
schedules of several antennas working together. sen for reception. The red star indicates the position
Making the assumption that all data received at one of the reception station.

1332 | JULY 2018


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
chunks are then advertised to the potential receivers third-party software within the workflow and the
of the data. The receivers can make requests to the collection of segmented data, respectively.
interesting data source(s) to reconstruct the entire Logical processing steps can be determined to go
raw satellite dataset to fit their needs locally. A qual- from the reception of raw data to a final product that
ity indicator, and other metadata associated with the can be typically ingested into a visualization system
data, is published along with the advertisement of at the forecasters desk or used in a data-assimilation
the data chunk. By exploiting this information, the system for NWP. Such a sequence of steps can be:
receiver is able to combine data from multiple sources
and optimize the data quality locally. 1) Moving data files to the production server
This data distribution scheme is implemented 2) Filtering or gathering of data granules
in the national meteorological services (NMSs) of 3) Geolocating and calibrating the raw data
Norway, Finland, and Sweden. It efficiently con- (level 0) to radiances, brightness temperatures,
nects these neighboring but geographically separated and reflectances (level 1)
antennas, improving local reception quality and in- 4) Processing the data, making RGB image com-
creasing the number of available overpasses at each posites, or the derivation of level 2 parameters,
NMS. At these high latitudes, for a reception taking including resampling to a predefined grid
in data from eight satellites, a single antenna can 5) Writing and storing the data to disk
only receive between 50% and 60% of the available
overpasses, while three stations coordinating their To demonstrate this concept, a part of Fig. 3 shows
schedules could receive 100% of the overpasses. the current processing flow at SMHI for the direct
Another omnipresent task for the satellite-reception readout of polar satellite data. Data from Advanced
station operator is shuffling information and data Very High Resolution Radiometer (AVHRR), Moder-
around. For this, two packages are available in PyTroll: ate resolution Imaging Spectroradiometer (MODIS),
Posttroll and Trollmoves. Posttroll is a communication and VIIRS on board the NOAA/Metop, EOS-Terra,
library built around the very efficient and powerful EOS-Aqua, and Suomi National Polar-Orbiting Part-
ZeroMQ (Hintjens 2013). It currently implements the nership (Suomi-NPP) satellites are being processed
publisher–subscriber and request–reply communica- in real time with PyTroll. Data are received via the
tion paradigms, along with help function to encode antenna in Norrköping, Sweden, or from nearby
and decode standard PyTroll messages. A PyTroll mes- antennas in Norway and Finland via Trollcast (green
sage might, for example, contain information that a sat- in Fig. 3). Three level 1 runners (darker orange in
ellite scene has been processed and a file is available on Fig. 3), one for each instrument, encapsulating three
disk. While Posttroll was developed with the purpose different third-party processing packages (AAPP,
of connecting and exchanging information between CSPP, and SeaDAS), manage the processing of the raw
individual processing tasks in a fully automated real- data records (RDR/level-0) to Scientific Data Records
time PyTroll batch processing system (see below), its (SDR/level-1). The VIIRS SDR granules produced by
generic design may allow for other user applications. CSPP with the cspp_runner are being collected by
As for data, Trollmoves provides a utility for moving the gatherer (lighter orange in Fig. 3), so that when
files from one place to another on a computer network. enough available granules are covering the local area
It uses a reliable client–server architecture where the of interest a message is published, and the processing
server advertises available data and the client makes of RGB imagery and level 2 products can start (blue
requests for relevant data. in Fig. 3). The flow-processor, as provided in Trollflow,
encapsulates SatPy and will produce a number of
24/7 PRODUCTION. The next logical step is rectified image products, typically in GeoTIFF2 and
to start product generation from the received data. PNG formats, from level 1 data from all sensors. The
Here, PyTroll offers tools for a lightweight generic and pps_runner encapsulates another third-party pack-
distributed workflow framework. Trollflow allows age, the NWCSAF/PPS (Dybbroe et al. 2005), that
encapsulating smaller processing steps (like reading
level 1 data and generating composites), while being 2
PyTroll supports a set of special Tiff tags (NinjoTiff) ap-
connected to other processing steps through mes- plicable to the Meteorological Workstation NinJo, used in
sages using Posttroll. Two other PyTroll tools, PyTroll- several countries in Europe and in Canada (www.ninjo
Runners and PyTroll-Collectors, allow the running of -workstation.com/).

AMERICAN METEOROLOGICAL SOCIETY JULY 2018 | 1333


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
Fig . 3. Simplified flow dia-
gram of how a PyTroll pro-
duction system with data
from both direct readout
of EO satellite data and
geostationary satellite data
received through EUMET-
Cast may look (here the
SMHI setup). The different
colors indicate different
levels of data processing
starting from reception to
level-2 production.

produces cloud parameters as netCDF files. Some as well. For example, the PyGAC package, developed
image products require both the level 1 radiances and in the framework of ESA’s Cloud Climate Change
the level 2 cloud parameters. In that case, the gatherer Initiative (ESA Cloud CCI, www.esa-cloud-cci.org/),
will wait until all input data are available before mes- allows reading, decoding, and calibration of 4-km
saging the flow processor. Global Area Coverage (GAC) data from the AVHRR
Trollflow is used in operations at the Finnish Me- instruments on board a series of NOAA and Metop
teorological Institute for MSG (0° service, RSS and satellites (Devasthale et al. 2017). These 34 years of
IODC), Himawari-8 and GOES-15 geostationary sat- data, available from 1978 to present, have been re-
ellites, and AVHRR/3 (both Metop and NOAA, direct cently processed using PyGAC in the frameworks of
broadcast and EARS) and Suomi-NPP/VIIRS (EARS ESA Cloud CCI and EUMETSAT’s Satellite Applica-
and direct broadcast) polar satellites. As an example, tion Facility for Climate Monitoring (CMSAF, www
the MSG 0° service is processed for five different area .cmsaf.eu) projects (Schulz et al. 2009; Hollmann et al.
definitions for the European area, and altogether 2013). These data were the basis for the subsequent re-
38 different composites are created. Typically, the trievals of the Thematic Climate Data Records (TCDR)
processing for this set takes 43 s for a daylight scene, of global cloud properties (Karlsson et al. 2017; Sten-
and less than 25 s for nighttime scenes when there are gel et al. 2017). As a demonstration, Fig. 4 shows the
less valid composites. The machine used in this case climatological-mean reflectance derived from AVHRR
is a Red Hat Enterprise Linux virtual machine with channel 1 (0.65 µm) using PyGAC for the 34-yr period
4 GB RAM and one CPU core (Intel Xeon) running from 1982 to 2015. In addition to 4-km GAC data, Py-
at 2.40GHz. GAC is capable of reading, decoding, and calibrating
1-km Local Area Coverage (LAC) data from AVHRR
PYTROLL FOR FACILITATING THE DERI- for climate applications. For example, Pareeth et al.
VATION OF CLIMATE DATA RECORDS. (2016) used PyGAC to derive geometrically corrected
While the operational needs triggered the original historical time series of brightness temperatures based
development of PyTroll packages, it offers possibilities on 28 years of 1-km LAC data (1986–2014) over the
to process EO data to cater climate research needs, alpine lakes of northern Italy.

1334 | JULY 2018


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
Fig. 4. Annual-mean climatological reflectance at 0.65 µm for the 34-yr period (1982–2015) based on daytime
AVHRR data from the afternoon satellites.

Users interested in investigating individual GAC channel access data unit (CADU) file format in addi-
and/or LAC orbits can use SatPy for easy reading, tion to high-resolution picture transmission (HRPT)
manipulation, and visualization, using the same format, which will allow sharing data from all cur-
method as presented in Fig. 1. rent polar EO satellites. Recent improvements have
been made to SatPy to more effectively handle large
FUTURE WORK. By February 2017, a handful data arrays both on single workstations and data clus-
of the European NMSs had signed a Memorandum ters, which is becoming increasingly important with
of Understanding (http://pytroll.github.io/pytroll the recent launches of Himawari-8 and Himawari-9
_mou_20170222.pdf) showing their long-term and GOES-16, and with new satellite missions on the
commitment to develop and maintain the Py- horizon, such as Meteosat Third Generation (MTG)
Troll software for operational use. All PyTroll and Metop Second Generation (EPS-SG) polar satel-
packages are available on GitHub (https://github. lites. To handle the very high data rates from these
co m /py t ro ll) for susta inabi lit y, which inte- more recent and future missions in a real-time batch
grates with various free cloud services that al- processing system, work toward distributed process-
lows continuous automatic code testing (Travis ing is being pursued (e.g., with the Dask library).
-ci.com and Appveyor); promotes good code documen-
tation (ReadTheDocs.io), code standards (Landscape
.io and Codacy), and test coverage (Coveralls.io); FOR FURTHER READING
and thus secures an overall healthy and robust code
base. Thus far, PyTroll has been mainly focusing on Bentley, J. L., 1975: Multidimensional binary search trees
imager data, but activities are ongoing to better inte- used for associative searching. Commun. ACM, 18,
grate other data sources, like the GOES-16 Lightning 509, https://doi.org/10.1145/361002.361007.
Mapper data and Hyperspectral sounder data like Cohen, B., 2008: The BitTorrent protocol specification.
the Infrared Atmospheric Sounding Interferometer www.bittorrent.org/beps/bep_0003.html.
(IASI) on Metop and Cross-Track Infrared Sounder Devasthale, A., and Coauthors, 2017: PyGAC: An
(CrIS) on Suomi-NPP and JPSS platforms. Work open-source, community-driven Python interface
is progressing to enhance Trollcast to support the to preprocess nearly 40-year AVHRR global area

AMERICAN METEOROLOGICAL SOCIETY JULY 2018 | 1335


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC
coverage (GAC) data record. GSICS Quarterly News- Pareeth, S., and Coauthors, 2016: New automated meth-
letter, 11, 3–5. od to develop geometrically corrected time series of
Dybbroe, A., A. Thoss, and K.-G. Karlsson, 2005: brightness temperatures from historical AVHRR
NWCSAF AVHRR cloud detection and analysis us- LAC data. Remote Sens., 8, https://doi.org/10.3390
ing dynamic thresholds and radiative transfer model- /rs8030169.
ing. Part 1: Algorithm description. J. Appl. Meteor., Rabier, F., 2005: Overview of global data assimilation de-
44, 39–54, https://doi.org/10.1175/JAM-2188.1. velopments in numerical weather-prediction centres.
Gumley, L., J. Descloitres, and J. Schmaltz, 2003: Creat- Quart. J. Roy. Meteor. Soc., 131, 3215–3233, https://doi
ing reprojected true color MODIS images: A tutorial. .org/10.1256/qj.05.129.
Hintjens, P., 2013: ZeroMQ: Messaging for Many Ap- Schulz, J., and Coauthors, 2009: Operational climate
plications. O’Reilly Media, https://books.google.se monitoring from space: The EUMETSAT Satellite
/books?id=TxHgtl\_sFmgC. Application Facility on Climate Monitoring (CM-
Hollmann, R., and Coauthors, 2013: The ESA climate SAF). Atmos. Chem. Phys., 9, 1687–1709, https://doi
change initiative: Satellite data records for essential .org/10.5194/acp-9-1687-2009.
climate variables. Bull. Amer. Meteor. Soc., 94, 1541– Stengel, M., and Coauthors, 2017: Cloud property
1552, https://doi.org/10.1175/BAMS-D-11-00254.1. datasets retrieved from AVHRR, MODIS, AATSR
Karlsson, K.-G., and Coauthors, 2017: CLARA-A2: The and MERIS in the framework of the Cloud_cci
second edition of the CM SAF cloud and radiation project. Earth Syst. Sci. Data, 9, 881–904, https://doi
data record from 34 years of global AVHRR data. .org/10.5194/essd-9-881-2017.
Atmos. Chem. Phys., 17, 5809–5828. Vallado, D. A., P. Crawford, R. Hujsak, and T. S. Kelso,
Lin, J. W.-B., 2012: Why Python is the next wave in 2006: Revisiting Spacetrack Report #3. AIAA Astro-
Earth sciences computing. Bull. Amer. Meteor. dynamics Specialists Conf. and Exhibit, Keystone,
Soc., 93, 1823–1824, https://doi.org/10.1175/BAMS CO.
-D-12-00148.1.

NEW FROM AMS BOOKS!


Synoptic-Dynamic Meteorology Lab Manual
Visual Exercises to Complement
Midlatitude Synoptic Meteorology
This lab manual represents a systematic, applied approach
to meteorological education that allows well-established
theoretical concepts to be used with modernized observational
and numerical datasets. Its groundbreaking visualizations
elucidate concepts taught in the companion textbook by Gary Synoptic-Dynamic
Lackmann, Midlatitude Synoptic Meteorology. Meteorology Lab Manual
VISUAL EXERCISES TO COMPLEMENT
Gary M. Lackmann, North Carolina State University MIDLATITUDE SYNOPTIC METEOROLOGY
Brian E. Mapes, University of Miami
Kevin R.Tyle, University at Albany, State University of New York Gary Lackmann, Brian E. Mapes & Kevin R. Tyle

© 2017, paperback and ebook, 126 pages A M E R I C A N M E T E O R O L O G I C A L S O C I E T Y

ISBN 13: 978-1-878220-26-4


eISBN: 978-1-935704-65-2
List price: $80
AMS Member price: $60 Student price: $50

bookstore.ametsoc.org

1336 | JULY 2018


Unauthenticated | Downloaded 01/29/23 02:04 PM UTC

You might also like