GIS595/MEA792:
UAV/lidar Data Analytics

This is an unmaintained course material, please see current material at:

GIS based analysis of UAS derived data processing outputs

In this assignment we analyze the DSMs derived from the UAS imagery in terms of their accuracy and type of distortions based on the use of GCPs and different processing software. Then we map the terrain change (due to vegetation growth, erosion, and other impacts using two different uas surveys).
  • Including GCPs in geoprocessing improves the results. Does it have an effect on phenomenon that you are investigating?
  • Agisoft is only one example of the software solutions available for the UAV data processing. In the GRASS location there are available DSM generated in different environments: OpenDroneMap, Pix4D and Trimble Business Center (just for one example flight). Compare the differences between these DSMs.
  • In Assignment 3 you’ve used arbitrary given parameter values in each processing step. You can change various modes, quality, values and options and investigate if it does improve the results. You can find descriptions of the options for each processing step on lecture slides and in the Agisoft Manual.

DSMs comparison - influence of GCPs

In order to detect the bowl effect, additional DSM needs to be computed. This time GCPs shuld not be used in the processing. You can repeat all the steps in Agisoft from Assgment 3 - part for quality processing. Batch processing commands should be in this order:

  1. Align Photos
  2. Optimize Alignment (this is only based on camera coordinates)
  3. Build Dense Point cloud (quality:medium)
  4. Build Mesh (face count 50 000 000)
  5. Decimate Mesh (face count: 1 000 000)
  6. Build Texture
  7. Export DEM
Then calculate the differences in elevation in the DSM generated with GCPs and the new one without GCPs in GRASS GIS using raster map algebra:
g.region rast=sample_DSM -p
r.mapcalc expression="GCP_noGCP = sample_DSM - sample_DSM_noGCPs"
Change the color map to better see the differences (entering the values directly in the dialog r.colors dialog will probably work the best):
35 blue
36 white
37 red

Compare DSMs generated in different software

For the flight from 2015-06-20 there are DSM with GCPs generated in 3 different software environments (Trimble Business Center, Agisoft Photoscan and Pix4D). Additionally there are DSMs generated without GCPs in Agisoft Photoscan and Pix4D.

Check the bowl effect for the Agisoft generated products:

g.region rast=2015_06_20_DSM_agi_11GCP -p
r.mapcalc expression="agi_GCP_agi_noGCP = 2015_06_20_DSM_agi_11GCP - 2015_06_20_DSM_agi_noGCP"
Change the color table to better see the differences.

Check the bowl effect for the Pix4D generated products:

r.mapcalc expression="p4d_GCP_p4d_noGCP = 2015_06_20_pix4d_11GCP_dsm - 2015_06_20_DSM_pix4d_NoGCP"
Which software does generate larger bowl effect?
r.mapcalc expression="agi_trimble = 2015_06_20_DSM_agi_11GCP - 2015_06_20_DSM_Trimble_11GCP"
r.mapcalc expression="p4d_agi = 2015_06_20_pix4d_11GCP_dsm - 2015_06_20_DSM_agi_11GCP"
r.mapcalc expression="p4d_trimble" = 2015_06_20_pix4d_11GCP_dsm - 2015_06_20_DSM_Trimble_11GCP"
Apply the color table that varies from -1m to 1m to visualize results of the comparison using r.colors module. In the Define tab, type the following rules in the enter values directly option.
 -40 red
 -1 orange
 -0.5 yellow
 -0.1 grey
 0 white
 0.1 grey
 0.5 cyan
 1 aqua
 35 blue
Compare the maps. How do they relate to each other? What patterns (artifacts) can you recognize?

Detect potential processing artifacts using terrain analysis

It is also useful to a perform terrain analysis using GIS tools to see the differences even more clearly.

Run the r.slope.aspect and r.relief command for chosen DSMs, for example:

r.slope.aspect elevation=sample_DSM slope=sample_DSM_slope aspect=sample_DSM_aspect pcurvature=sample_DSM_curv
r.relief input=sample_DSM output=sample_DSM_relief
r.slope.aspect elevation=sample_DSM_noGCP slope=sample_DSM_noGCP_slope aspect=sample_DSM_noGCP_aspect pcurvature=sample_DSM_noGCP_curv
r.relief input=sample_DSM output=sample_DSM_noGCP_relief

You can also install GRASS GIS Addons (via g.extension):

and apply this modules to sample data or your data.
g.extension extension=r.local.relief operation=add 
r.local.relief input=sample_DSM output=local_relief_sample_DSM
r.local.relief input=sample_DSM_noGCPs output=local_relief_sample_DSM_noGCPs
g.extension extension=r.shaded.pca operation=add 
r.shaded.pca input=sample_DSM output=shaded_pca_sample_DSM
r.shaded.pca input=sample_DSM_noGCPs output=shaded_pca_sample_DSM_noGCPs
g.extension extension=r.skyview operation=add
r.skyview input=sample_DSM output=skyview_sample_DSM
r.skyview input=sample_DSM_noGCPs output=skyview_sample_DSM_noGCPs

Detect terrain change using two UAS surveys

g.region rast=2015_06_20_DSM_agi_11GCP -p
r.mapcalc "diff_jun_oct_agis = 2015_06_20_DSM_agi_11GCP - 2015_10_06_DSM_agi_8GCPs"
Note the accuracy of the DSM along the roads, interpret the observed gain and loss in elevation. Use Orthphoto to assist with interpretation.