Friday 1:55 p.m.–2:25 p.m.
Satellite mapping for everyone
- Audience level:
Concerned about urban sprawl, landscape change or ecosystem recovery? Wildfire, drought or flooding? A vast amount of satellite data, collected since the 1970s, is freely available for your next mapping project. I will demonstrate how Python helps to make sense of odd scientific data and metadata formats and produce beautiful visualization and map products.
**0. Background** High-quality free satellite data is available nowadays for simple download from agencies such as NASA, NOAA, ESA or the USGS. Imagery to resolutions of about 15-30m is detailed enough to map regional processes, be they environmental, industrial, or related to catastrophic events. But even coders who use GIS data as a matter of course are not often comfortable generating their own RGB raster maps. On the other hand, students and researchers in geospatial disciplines are often stuck in clumsy GUI-driven software and are unfamiliar with how a general purpose scripting language with excellent library support can help them. This talk aims to bridge this gap: to give Python coders the enough knowledge of the anatomy of a satellite imagery scene, show researchers the power of Python, and point both to the best libraries to get both groups started on their mapping project. **1. For example, natural hazard mapping with Landsat.** Satellite imagery comes in many data file formats, from the straightforward to the frustrating and convoluted. We will spend the bulk of the talk on the easiest format: GeoTIFF, which is essentially a TIFF file with extra tags with information about data types, geographic extent and map projection. Luckily, GeoTIFF is not only the most friendly format for satellite imagery, it is also the one used by US Geological Survey, which distribute images from the Landsat family of earth observing satellites. Landsat images are not super-high resolution, but good enough to show roads, fields, rivers, industrial installations, forests, and landscape structures. [Their quality is superb]. An example is this before/after image of a pond at the Mount Polley mine in BC, Canada, which, in early August, 2014, developed a breach and released toxic wastewater into the surrounding waters. ![MtPolley] **2. Data details** The scene comes as a zip file or tarball which contains a plain-text metadata file and, depending on the version of the satellite, a varying number of GeoTIFF files with the same footprint. Any three of these are used to make false-color RGB images. We will use the GDAL library to read the images. This provides access to the data itself appears as Numpy arrays. GDAL makes it easy to relate rater indices to geographic location, while Numpy takes over the task of subsetting and data type conversion. The [wrapper classes] I have written remove some of the complexity. High-quality maps are generated with Matplotlib's Basemap toolkit, and all code will be available in iPython notebooks. **3. Beyond Landsat** A short section at the end of the talk will be devoted to data file formats that are less accessible than GeoTIFF, specifically HDF-EOS (used by NASA) and HDF5 (used among others by NOAA). HDF5 in particular is worth knowing as it is a good choice for storing your own raster data. It turns out that making raster maps from satellite data is in no way harder than using shapefiles for GIS applications. Both can be combined using the Basmeap and/or the powerful shapely/fiona set of libraries An animation] is online, and some code examples can be found in IPython notebooks [here] and [here]. : https://www.youtube.com/watch?v=8nboMGGdXUc : https://github.com/chryss/pygaarst : https://dl.dropboxusercontent.com/u/372734/IMG/MountPolley20140805.jpg : http://www2.gi.alaska.edu/~cwaigl/demos/seaice/pribiloff_map.mp4 : http://nbviewer.ipython.org/gist/chryss/7593127 : http://nbviewer.ipython.org/gist/chryss/7638837