-
Notifications
You must be signed in to change notification settings - Fork 2
Land Cover Change Analysis Workflow
Detailed instructions are in Lab Five in the course manual. Summary:
- Save a kml file of the area of interest and load it in Earthdata to look for images (spatial filter).
- To find appropriate tiles in Earthdata, apply collection filter (landsat) and temporal filter (years of interest). To further refine the area of interest, apply a spatial filter by grid code derived from a relevant Landsat tile.
- Download granules and geotiff products.
- Uncompress .tar.gz files.
- Note: Remember that most Landsat images will require patching, so download more than one granule.
- Use tips from Lab 4 and end of Lab 5 for metadata format.
These steps are outlined in Lab 7.
Requires the following: concatenate band images, optical calibration, and manage noData. These steps can be carried out in Orfeo and are outlined in Lab 8 and in the videos L8a_Concatenate, L8b_OpticalCalibration, L8h_RecapOpticalCalibrationMaskingPatching. Summary:
-
Image concatenation: Launch OTB applications browser and use Image Manipulation -> ConcatenateImages. Set output to uint 8. Set different RGB composites to check. (L8a_Concatenate)
-
Optical calibration: Open the Calibration -> Optical Calibration tool. Save output as float, calibration level is Image to Top of Atmosphere, fill out the rest of the parameters using the scrapeMetaData sheet (may need to alter the formulae in the sheet depending on landsat year). (L8b_OpticalCalibration)
-
NoData management: (L8h_RecapOpticalCalibrationMaskingPatching, 6:45 onwards)
- Resample to match grid system. Use Geometry -> Superimpose tool.
- Create data mask (=1 if value in both images, 0 if no data in either image). Use Miscellaneous -> Band Math tool and expression <im1b1 && im1b2 && im1b3 && im1b4 && im1b5 && im2b1 && im2b2 && im2b3 && im2b4 && im2b5>.
- Apply this mask to trim images. Use Conversion -> ManageNoData tool -> Apply a mask as no data.
- Use SAGA and trimmed images from previous step.
- Tools -> Imagery -> Classification -> K-Means Clustering for Grids. (L8i_KMeans)
- Simplified classification when you want to create a mask for clouds:
- Mark clusters as clouds or no clouds.
- Reclassify the cluster layer to get rid of duplicates. Clean and make two excel sheets, assign 0 to clouds, then Grid -> Tools -> Reclassify Grid Values. ( L9a_ReclassifyFilter)
- Reduce noise from classification filter by using majority filter. Grid -> Filter -> Majority/Minority Filter. (L9b_MajorityFilter)
- [Only do this if more than 2 classes] Reclassify again to make boolean mask. Grid -> Tools -> Reclassify Grid Values tool to make everything greater than or equal to 1 into 1 (Thus clouds become 0). (L9c_MaskInRasterAndVector)
- Convert SAGA grid to polygon to use in QGIS. Shapes -> Grid Tools -> Vectorizing Grid Classes.
- Can do this in QGIS.
- Load mask into Q and export biggest polygon as kml to view in Google Earth.
- Make polygons for training classes. ( L9d_DigitizeTrainingAreas)
- Load training areas and make more polygons in QGIS. (L9e_DigitizeInQGIS)
- Toggle edit the layer and add polygons for important or left out classes.
- Can load this training areas layer in SAGA and refine or add polygons based on kmeans classes. ( L9f_SupervisedClassification)
- Use SAGA for this step.
- Load the latest image in SAGA and use the training layer as a parameter in Imagery -> Classification -> Supervised Classification for Grids. (L9f_SupervisedClassification, 2:45 onwards)
- Combine any classes if needed with the excel sheet based reclassification method outlined above. (L9i_ReclassifyMajorityFilter)
- Run majority filter to remove noise. (L9i_ReclassifyMajorityFilter, 6:45 onwards)
- Save all files.
- Can do this through cross-tabulation by selecting random points and checking if they match with the actual imagery.
- In SAGA, use Grid -> Tools -> Resampling to simplify the grid so you can create polygons for ground truthing. (L10a_Resampling)
- To reduce processing time, run this grid through a majority filter. (L10c_RandomPoints)
- Create polygons of classes. Shapes -> Grid Tools -> Vectorizing Grid Classes. (L10b_VectorizePolygons)
- Open this shape file in QGIS, specify coordinate system, then use Vector -> Research Tools -> Random points inside polygons (fixed). (L10c_RandomPoints, 1:20 onwards)
- Convert the points to kml layer and open in Google Earth for ground truthing. (L10d_GroundTruth)
- Classify the points using satellite data, then load into QGIS and open the google satellite image to fill in any missing values.
- Convert this shape file into a grid in order to compare. For this, open shape file in SAGA, convert the Name column to integer, then Grid -> Gridding -> Shapes to Grid. (L10e_ShapeToGrid)
- Crosstabulate with Imagery -> Classification -> Confusion Matrix (two grids). (L10f_Crosstabulate)
- Can look at GIMMS to check land cover change. (L8j_FinishedKmeans)
- To get a nice visualization in QGIS, set Red bank to 4, Green band to 3, Blue band to 2, and select contrast enhancement -> Stretch to MinMax -> Mean +- sd. (L9e_DigitizeInQGIS)
- Additional topics mentioned in L9g_ClassificationResults: Looking at spectral signatures of classes, texture analysis.
- When exporting saga tif after supervised classification, the coordinate system is often undefined. Be careful to define the coordinate system when loading into a GIS like Q.