Use IDL programming to detect surface changesRaymond94
GEOG 6088 : IDL Coursework Assignment
Assignment Deadline : 9th January 2019
1.) Introduction The IDL sessions that formed part of this module have introduced you to the functionality of IDL and illustrated how procedures and functions are developed in order to solve a task. This assignment will require you to make use of a number of the functions and techniques that will be learnt during this module. You can start this assignment whenever you wish as some aspects of the assignment do not require IDL programming skills. As the module progresses and new IDL coding practices are introduced, incorporate these into the algorithm you are developing.
2.) The Assignment Detecting change between two or more images (i.e. land cover change over time) is a common application of remote sensing. There are numerous approaches to detecting surface change which vary with sensor, the land cover being monitored, the spatial & temporal resolution of the instrument etc. For this assignment you are required to :
1) develop a algorithm that detects land surface change 2) provide estimates of the total surface area where land cover change has been
detected by your algorithm over all years (1992-2010) and the change that occurs between each year (i.e. the rate of change).
3) produce a map highlighting the areas that have changed and in which year that change occurred. The map must be of publication quality.
The approach you take for detecting the land surface change is up to you but it must be supported by the literature. For example, one common approach is by monitoring variations are vegetation indices (such as the Normalised Difference Vegetation Index, NDVI). Whichever approach you take will require you to define a threshold which indicates CHANGE/NO CHANGE. From the literature, consider how these are defined but they need to be based on a statistical analysis of the data (using IDL functionality). This assignment therefore concerns not only developing an algorithm in IDL but also a consideration of the factors that affect estimating land cover change and classification.
2.1) Datasets For this assignment, 4 Landsat binary images have been provided that were acquired over a region of South America between 1992 and 2010. These data contain the 1st 5 bands of Landsat (in order : Blue, Green, Red, NIR, SWIR). The image dimensions are 3500 columns
and 2500 rows and are of byte data type (i.e. pixel values are digital numbers). The image file name format and file names are : Landsat_[year]_[month]_[day]_[bands]_subset.img Landsat_1992_08_06_b12345_subset.img Landsat_2001_04_25_b12345_subset.img Landsat_2006_06_26_b12345_subset.img Landsat_2010_07_07_b12345_subset.img Note : the data are in digital number (DN) format. There is no need to convert them to radiance or reflectance (to do this you would need the gain and offset information that is available with the original (raw) image files). There is no need to atmospherically correct the data. Also included with the data are an image of Latitude and Longitude that are 3500 columns and 2500 rows and have a double data type. These images are provided to allow you to produce a map of areas affected by land surface change. In this example, only 4 Landsat images are being used over a small region. In this case it might be more efficient to use ENVI to conduct this analysis. However, if you were interested in mapping land surface change over time across the entire South American continent a programmatic approach is required. NOTE: To assist you in this assignment you can use plotting, colour and mapping functions (e.g. plotting related functions) written by other people e.g. David Fanning’s website. All other code needs to be written by yourself or be part of the IDL functionality. You can use ENVI to inspect the imagery in order to help in developing your methodology (e.g. help in defining any thresholds etc). However, all aspects of processing the data (reading, detecting change and producing the map) must be performed in IDL. If you use plotting/mapping routines provided by other people then you need to reference them. You are not to use iTools to plot or map the data. I am looking for you to display your understanding of IDL (plotting, graphics, commands) and logic in terms of how you go about solving the problem(s).
3.) Assignment Components This assignment has 3 different components. The overall purpose of the assignment is for you to develop an IDL procedure to read data, process that data and to output the results in different formats. Before you start writing your code it would be a good practice to the steps that you need to go through in order to produce the outputs (i.e. a detailed plan – referred to as pseudocode or flowchart : https://www.bbc.co.uk/bitesize/guides/z3bq7ty/revision/1).
4.) Writing your IDL procedure Having developed your pseudocode of your algorithm you then need to write it in IDL. Make use of the notes from the practical sessions and the online help. Having a detailed and thorough set of pseudocode will make developing the procedure more straightforward. When developing your procedure there are a number of routes you can take to meet your objective (i.e. mapping land surface change. Areas for you to considering during this process are :
a) Error checking It is important to include checks for potential errors in your code. For example, if you make use of the where() function, ensure that you consider what might happen if the result of the where() function is negative. When you first run your code, step through it and check the variable and their values to ensure that it is working as you expect.
b) Neatly structured It is good practice to write your code in a logical and clear manner. Always make good use of comments so that it is easy for both yourself and other users to look at your procedure and quickly grasp what it is doing. Use TABS to indent your code within loops so it is easy to read. Make use of FUNCTIONS and LOOPS to write aspects of the procedure which might be used a number of times either in this procedure or other procedures (i.e. try to make your programs modular).
c) Efficient This is also related to making your code modular (i.e. create functions where suitable). If you use a loop processing an array, consider what other calculations can be implemented within that loop rather than create another loop later in the code.
5.) Write Up The assignment write up will consist of 3 parts :
a) A discussion of use of remote sensing for detecting land cover change using Landsat and of the methodology you implemented to detect the surface change (1 page) (5%)
b) The IDL procedure for detecting land surface change with comments on what sections of code are doing. Commenting code is important as it helps other people using or reading the code understand what the code is doing. Include the comments in the IDL procedure (these should be detailed enough for other people to understand what different aspects of the code are doing) (70%) The final results of the algorithm and (if relevant) a discussion of any difficulties found in implementing the methodology, potential improvements to the code, any problems encountered. (25 %) [no more than 5 pages] The results should include :
1) one or more maps illustrating areas of change for each time period (e.g. 1992-2001, 2001-2006, 2006-2010 and 1992-2010). There is no need to include a scale bar but you can include a colour bar and any other
elements you think would be useful to include on a map. Extra marks will be given for mapping the input imagery such as the NDVI images.
2) numerical land cover change estimates (i.e. the rate of change, area of change) i. in tabular format using word or excel
ii. as graph(s). The graphs need to be produced using IDL code and provided either as a separate IDL script than or contained as part of the IDL code used to produce the data. You can use plotting functions provided by David Fanning if you wish (remember to reference these however).