-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathGRASS_remotesensing.qmd
More file actions
756 lines (490 loc) · 28 KB
/
GRASS_remotesensing.qmd
File metadata and controls
756 lines (490 loc) · 28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
---
title: "Introduction to Remote Sensing with GRASS"
author: "Michael Barton"
date: 2025-05-21
date-modified: today
image: img_remotesensing/thumbnail.webp
lightbox: true
format:
html:
embed-resources: true
toc: true
code-tools: true
code-copy: true
code-fold: false
page-layout: article
categories: [beginner, GUI, imagery, remote sensing, visualization]
description: Analysis and visualization of multi-band satellite imagery using image fusion, environmental indexes, and dimensionality reduction with principal components analysis.
execute:
eval: false
copyright:
holder: Michael Barton
year: 2025
funding: "Creation of this tutorial was supported in part by US National Science Foundation grant FAIN 2303651."
# © Michael Barton 2025
---
::::: grid
::: g-col-4
GRASS has many tools for processing and visualizing remote sensing imagery. This tutorial only scratches the surface of GRASS's extensive capacity for image processing.
Hopefully, it will give you some sense of the potential for analysis and visualization of remote sensing imagery in GRASS and the potential to combine remote sensing analysis with raster and vector GIS processing.
We will start with a quick overview of multi-band satellite imagery.
:::
::: g-col-8

:::
:::::
::: {.callout-note title="Dataset"}
This tutorial uses one of the standard GRASS sample data sets for Flagstaff, Arizona, USA: ***flagstaff_arizona_usa***. We will refer to place names in that data set, but it can be completed with any of the [standard sample data sets](https://grass.osgeo.org/download/data/) for any region--for example, the [North Carolina data set](https://grass.osgeo.org/sampledata/north_carolina/nc_spm_08_grass7.zip).
We will use a set of images from the **Landsat 8 satellite** and the *elevation* DEM raster map. However, this tutorial can also be used with other multi-band imagery, such as Sentinel or Terra/ASTER. With other satellite imagery than Landsat 8, the band numbers may differ from those described in this tutorial.
:::
::: {.callout-note title="GRASS environment"}
This tutorial is designed so that you can complete it using the **GRASS GUI**, GRASS commands from the **console or terminal**, or using GRASS commands in a **Jupyter Notebook** environment.
:::
::: {.callout-note title="Don't know how to get started?"}
If you are not sure how to get started with GRASS using its graphical user interface or using Python, checkout the tutorials [Get started with GRASS GUI](../get_started/fast_track.qmd) and [Get started with GRASS & Python in Jupyter Notebooks](../get_started/fast_track_grass_and_python.qmd).
:::
# Remote sensing basics
## Many Forms of Remote Sensing
There are many forms of remote sensing. This tutorial will focus on space-based remote sensing platforms.
:::::: grid
::: g-col-4
{style="width: 100%"}
:::
::: g-col-4
{style="width: 100%"}
:::
::: g-col-4
{style="width: 100%"}
:::
::::::
## Space-based platforms
::::: grid
::: g-col-5
- These satellites have sensors to capture the reflectance of solar **electromagnetic (EM) radiation** that reaches the earth–including the EM we see as visible light.
- Different materials absorb, emit, and reflect EM radiation in different frequencies.
- Space based sensors capture images across multiple EM frequencies in different “**bands**” or “**channels**” to enable the identification of different materials or features.
- Sensor band images as rasters can be combined mathematically in different ways to enable visualization or identification of features or materials.
:::
::: g-col-7


:::
:::::
# Visualization of multi-band remote sensing imagery in GRASS
GRASS has many tools for combining and analyzing single and multi-band imagery. In this tutorial, we will explore a few of these analytical tools using images of the Flagstaff region from the **Landsat 8** satellite.
{width="80%"}
## Landsat bands to analyze
The following Landsat 8 bands are provided with the Flagstaff data set:
- *landsat8_2024_B1* : high frequency visible blue for cirrus clouds\
- *landsat8_2024_B2* : visible blue\
- *landsat8_2024_B3* : visible green\
- *landsat8_2024_B4* : visible red\
- *landsat8_2024_B5* : near infrared\
- *landsat8_2024_B6* : mid infrared (higher freq)\
- *landsat8_2024_B7* : mid infrared (lower freq)
In this tutorial, we will use Landsat 8 bands 2-7.
## Visualize individual Landsat bands
::::: grid
::: g-col-6
- Load **bands 2-7** into the layer manager but not band 1 (*landsat8_2024_B1*).
- Notice how dark each of the images is.
- That is because, although each cell could be one of 65,536 values, nearly all are within a very narrow range.

:::
::: g-col-6

:::
:::::
## Histogram equalization
The range of grey shades can be remapped across the cell values, so that they fully span a black to white continuum. This can be done in [r.colors](https://grass.osgeo.org/grass-stable/manuals/r.colors.html) by “equalizing” the color histogram of the cells.
{width="80%"}
### Histogram equalization in GRASS
Using [r.colors](https://grass.osgeo.org/grass-stable/manuals/r.colors.html) for histogram equalization will enhance the visibility of the image but will not change its cell values.
::::::::: {.panel-tabset group="language"}
#### GUI
::::: grid
::: g-col-6
1. Select *r.colors* from the **Raster/Manage colors** menu
2. Enter a Landsat image in the **Name of the raster map(s)** text box
:::
::: g-col-6

:::
:::::
::::: grid
::: g-col-6
3. Check the **histogram equalization** box
4. Select *grey* in the **Name of color table** text box
5. Press **Run**
6. Do the same for each of the Landsat bands.
:::
::: g-col-6

:::
:::::
#### Command line
```{python}
r.colors -e map=landsat8_2024_B2 color=grey
r.colors -e map=landsat8_2024_B3 color=grey
r.colors -e map=landsat8_2024_B4 color=grey
r.colors -e map=landsat8_2024_B5 color=grey
r.colors -e map=landsat8_2024_B6 color=grey
r.colors -e map=landsat8_2024_B7 color=grey
```
#### Python
```{python}
gs.run_command("r.colors",
map=landsat8_2024_B2,
color=grey,
flags="e")
gs.run_command("r.colors",
map=landsat8_2024_B3,
color=grey,
flags="e")
gs.run_command("r.colors",
map=landsat8_2024_B4,
color=grey,
flags="e")
gs.run_command("r.colors",
map=landsat8_2024_B5,
color=grey,
flags="e")
gs.run_command("r.colors",
map=landsat8_2024_B6,
color=grey,
flags="e")
gs.run_command("r.colors",
map=landsat8_2024_B7,
color=grey,
flags="e")
```
:::::::::
All examples described in the rest of this tutorial are done with histogram stretched images.
::: {.callout-note title="Tip"}
Histogram each image **separately** instead of doing all of them together as a group because each image has a different distribution of pixel/cell values to stretch.
:::
------------------------------------------------------------------------
{width="80%"}
# Image fusion
## Color image fusion of Landsat bands
Each Landsat image has cell values representing the reflectance intensity in a particular range of EM frequencies (i.e., multiple image bands). When visualized as a raster, a single Landsat band appears as variable, single color (e.g., grey-scale) map.
**Image fusion** refers ways of combining multiple bands in order to visualize them as a full color image. Most simply, this involves defining 3 image bands as the red, green, and blue channels of a **multicolor RGB image.**. The resulting color visualization displays areas with similar combinations of reflectance across the 3 selected bands (e.g., vegetation, water, or highways) as having the same color and differing from areas with different combinations of reflectance.
This can be easily done in GRASS using the [*d.rgb*](https://grass.osgeo.org/grass-stable/manuals/d.rgb.html) tool in the layer manager.
## Image fusion in the layer manager {#image-fusion-layermgr}
::::: grid
::: g-col-6
1. Select **Add RGB map layer** from the **Add various raster layers** tool
:::
::: g-col-6

:::
:::::
::::: grid
::: g-col-6
2. Select Landsat bands to define as the red, green, and blue channels of a multicolor image.
3. For a "natural color" image fusion, try:
- Band 4 (visible red EM) as red
- Band 3 (visible green EM) as green
- Band 2 (visible blue EM) as blue
:::
::: g-col-6


:::
:::::
{width="80%"}
## Image fusion: other band combinations
Try some other combinations to highlight different features.
::::: grid
::: g-col-6
- Using bands 5, 4, and 3 highlights chlorophyll (vegetation) in red.
:::
::: g-col-6

:::
:::::
::::: grid
::: g-col-6
- Image fusion with bands 6, 5, and 3 uses infrared EM to highlight other land cover and land use differently.
:::
::: g-col-6

:::
:::::
# Environmental indices
## Environmental information from mathematical combinations of remote sensing bands
Because different materials—including different vegetation, soils, and water—reflect, absorb, and emit EM in different frequencies, many kinds of environmental information can be derived with different band combinations.
GRASS can generate a large number of environmental indices with its extensive suite of imagery tools (See the **Imagery** menu), as well as with the raster *map calculator*. Additional remote sensing image product tools are available as GRASS addon extensions.
A commonly used environmental index is **NDVI** : the normalized difference vegetation index. NDVI is an index of plant growth and health. It is computed from bands sensing near infrared (NIR) and visible red light.
$$
NDVI = \frac{NIR - red}{NIR + red}
$$
While you could create a map of NDVI using the *map calculator*, it can also be generated automatically from the GRASS [i.vi](https://grass.osgeo.org/grass-stable/manuals/i.vi.html) module, along with many other vegetation indexes.
::: {.callout-note title="Tip"}
When generating any new map, like NDVI, remember to first make sure that the **region** is set to match the LandSat images.
:::
### NDVI example: normalized difference vegetation index
::::::::: {.panel-tabset group="language"}
#### GUI
**Set the region to match the Landsat images**
1. Add one of the LandSat images raster to the **Layer Manager**.
2. Right click on the LandSat image in Layer Manager.
3. Select **Set computational region from selected map**.
::::: grid
::: g-col-6
**Compute NDVI raster**
1. Select the [i.vi](https://grass.osgeo.org/grass-stable/manuals/i.vi.html) tool from **Imagery/Satellite image products/vegetation indices** menu.
2. Choose **NDVI** for the index to calculate.
3. Enter the name of the **output map** to create.
:::
::: g-col-6

:::
:::::
::::: grid
::: g-col-6
4. Enter band 4 for the **red channel**.
5. Enter band 5 for the **NIR (near infrared) channel**.
:::
::: g-col-6

:::
:::::
#### Command line
1. Set the region to match the Landsat images.
2. Use the [i.vi](https://grass.osgeo.org/grass-stable/manuals/i.vi.html) tool to create a map of NDVI values.
```{python}
g.region raster=landsat8_2024_B2
i.vi output=Flagstaff_NDVI viname=ndvi red=landsat8_2024_B4 nir=landsat8_2024_B5
```
#### Python
1. Set the region to match the Landsat images.
2. Use the [i.vi](https://grass.osgeo.org/grass-stable/manuals/i.vi.html) tool to create a map of NDVI values.
```{python}
gs.run_command("g.region", raster="landsat8_2024_B2")
gs.run_command("i.vi",
output=Flagstaff_NDVI,
viname=ndvi,
red=landsat8_2024_B4,
nir=landsat8_2024_B5
)
```
:::::::::
{width="80%"}
# Combining information from many imagery bands
We can visualize 3 bands at a time with RGB color image. But how can we use information from all 6 Landsat bands at the same time? This requires using multivariate statistics for “dimensionality reduction”. GRASS has multiple analytical tools for dimensionality reduction.
Here, we will explore **principal components analysis** (PCA). PCA mathematically combines the original variables (the Landsat bands) to create new “component” variables that capture majority of variation in original Landsat bands.
## PCA of multiband images with GRASS
:::::: {.panel-tabset group="language"}
#### GUI
::::: grid
::: g-col-6
1. Open the principal components analysis (PCA) module, [*i.pca*](https://grass.osgeo.org/grass-stable/manuals/i.pca.html), found under the **Imagery/Transform images** menu.
2. Enter **names of images for Landsat bands 2-7**.
3. Provide an **output base name**. A number, representing the computed PCA component maps will be appended to this output base name.
4. There are other options but the default is OK for now.
5. Press run.
:::
::: g-col-6

:::
:::::
#### Command line
Perform a PCA and output the results to the console/terminal and as PCA component maps.
```{python}
i.pca input=landsat8_2024_B2,landsat8_2024_B3,landsat8_2024_B4,landsat8_2024_B5,landsat8_2024_B6,landsat8_2024_B7 output=Flagstaff_landsat8
```
#### Python
Perform a PCA and output the results to the console/terminal and as PCA component maps.
```{python}
gs.run_command("i.pca",
input="landsat8_2024_B2,landsat8_2024_B3,landsat8_2024_B4,landsat8_2024_B5,landsat8_2024_B6,landsat8_2024_B7",
output=Flagstaff_landsat8)
```
::::::
### Working with PCA results
Statistical details of PCA output appear in the console or terminal as shown below. Each line of the output represents a PCA component.
The list of values in parentheses shows the *eigenvector* of each PCA component, with the 6 values indicating the contribution of each of Landsat images 2-7 to the component. Larger positive or negative numbers indicate greater contributions of a band to the component. For example, Landsat band 4 has the largest contribution to PCA component 1, while band 6 has the largest contribution to component 2.
The percentage in brackets represent the amount of variation in the original Landsat bands 2-7 are captured by that PCA component. For example, PCA component 1 captures 58% of the variation in the original 6 bands and PCA component 2 captures 35% of the variation.
```
Eigen values (vectors) [% importance]
PC1 14640530.56 ( 0.4461, 0.4915, 0.5480, 0.4167, 0.1994, 0.2136) [58.03%]
PC2 8850161.06 ( 0.2240, 0.1951, 0.1050, 0.0543,-0.7001,-0.6385) [35.08%]
PC3 1502032.84 ( 0.2335, 0.1528, 0.2947,-0.8794,-0.1102, 0.2231) [ 5.95%]
PC4 108422.28 ( 0.4370,-0.8041, 0.3529, 0.0416, 0.1120,-0.1536) [ 0.43%]
PC5 94291.01 ( 0.4417, 0.2122,-0.4285,-0.1814, 0.5597,-0.4797) [ 0.37%]
PC6 34241.78 ( 0.5570,-0.0735,-0.5418, 0.1242,-0.3636, 0.4931) [ 0.14%]
```
::::: grid
::: g-col-6

:::
::: g-col-6

:::
:::::
### Visualizing PCA results
::::: grid
::: g-col-6
To better see spatial variation in a PCA component image, you can assign a different color table from the standard grey-scale. This is often called a "**false color image**".
Here is PCA component 1 colored with a **bcyr** (blue-cyan-yellow-red) color table with **histogram equalization** checked.
Follow the instructions given above for histogram equalization, but pick `bcyr` instead of grey for the color table.
```bash
# Set PCA component 1 to bcyr false color
r.colors -e map=Flagstaff_landsat8.1 color=bcyr
# Reset histogram to grey for subsequent steps
r.colors -e map=Flagstaff_landsat8.1 color=grey
```
Note how areas of different vegetation, soil, and water stand out more clearly than with grey-scale. Try other color tables.
:::
::: g-col-6
{width="80%"}
:::
:::::
### Image fusion with PCA results
::::: grid
::: g-col-6
The image fusion methods described above for multiple Landsat bands can also be used for PCA results.
The PCA text output shown above indicates that the first 3 PCA components capture 97% of the variation in the original 6 Landsat bands 2-7. This means that we can visualize nearly all of the information in the original 6 Landsat bands by creating an RGB color image of PCA components 1, 2, and 3 using [*d.rgb*](https://grass.osgeo.org/grass-stable/manuals/d.rgb.html) in the layer manager.
Follow the procedures described in the [Image fusion in the layer manager section](#image-fusion-layermgr) using PCA components 1-3.
Areas of different vegetation, water, urban construction, and other human landscape modification stand out in distinctive colors.
:::
::: g-col-6

:::
:::::
::::: grid
::: g-col-6
Sometimes less important PCA components can also be informative even though they capture a small percentage of the overall variation in the Landsat bands.
Try RGB image fusion with PCA components 4, 5, and 6. How does this image differ from one using PCA components 1, 2, and 3?
:::
::: g-col-6

:::
:::::
## Combining remote sensing images with other GIS data
In GRASS, remote sensing images are simply rasters, like DEM elevation maps or land use maps. That means that we can combine remote sensing imagery with any other kind of map available in your GIS database.
For example, the a vector map of streams and lakes can be overlaid in the Layer Manager onto the image fusion of PCA components 1-3 created above.
{width="80%"}
# 3D visualization of remote sensing and GIS
Image fusion can also be used to add color to topography in multiple ways. This makes it possible to visualize information from satellite imagery, or derivative products like PCA components, together with topographic relief.
Image fusion with PCA components of Landsat images combined with relief from a DEM makes it possible to represent information across 6 bands in the EM spectrum, elevation, slope, and aspect in a single 9-dimensional visualization.
Such complex visualizations can be done easily in GRASS by creating a new color shaded relief map, in the layer manager. This requires only a few steps.
1. Create a relief map of topography from a DEM.
2. Combine satellite bands or PCA components into a new RGB color map.
3. Use the RGB color map to shade the relief map in a new color shaded relief map in the Layer Manager.
## Generating a topographic relief map in the Layer manager
A relief map can be made from the *elevation* DEM using the [r.relief](https://grass.osgeo.org/grass-stable/manuals/r.relief.html) tool from the **Raster/Terrain analysis/Compute shaded relief** menu
:::::: {.panel-tabset group="language"}
#### GUI
::::: grid
::: g-col-6
1. Open *r.relief*.
2. Select the *elevation* for the **Input raster** text box.
3. Enter *elevation_relief* in the **Name for output shaded relief map** text box.
4. Entering a number larger than 1 (e.g., 3) as the **Factor for exaggerating relief** will make the topographic relief more visible.
5. Press Run.
:::
::: g-col-6


:::
:::::
#### Command line
```{python}
r.relief input=elevation output=elevation_relief zscale=3
```
#### Python
```{python}
gs.run_command("r.relief",
input="elevation",
output="elevation_relief",
zscale=3)
```
::::::
### Generating an RGB color map from image fusion
Use the [r.composite](https://grass.osgeo.org/grass-stable/manuals/r.composite.html) tool from the **Raster/Manage colors/Create RGB** menu to create a new RGB map from the fusion of 3 PCA component maps.
:::::: {.panel-tabset group="language"}
#### GUI
::::: grid
::: g-col-6
1. Open *r.composite*.
2. Enter the PCA component maps 1-3 into the **red, green, and blue text entry boxes**.
3. Enter Flagstaff_landsat8PCA_123_RGB as the **output RGB map**.
4. Press Run.
:::
::: g-col-6

:::
:::::
#### Command line
```{python}
r.composite red=Flagstaff_landsat8.1 green=Flagstaff_landsat8.2 blue=Flagstaff_landsat8.3 output=Flagstaff_landsat8PCA_123_RGB
```
#### Python
```{python}
gs.run_command("r.composite",
red="Flagstaff_landsat8.1",
green="Flagstaff_landsat8.2",
blue="Flagstaff_landsat8.3",
output="Flagstaff_landsat8PCA_123_RGB")
```
::::::
## Combining relief and a color image fusion map
A topographic relief map and an RGB image fusion map can be combined with the [d.shade](https://grass.osgeo.org/grass-stable/manuals/d.shade.html) tool in the layer manager or by using the [r.shade](https://grass.osgeo.org/grass-stable/manuals/r.shade.html) tool from the **/Raster/Terrain analysis/Apply shade to raster** menu.
:::::: {.panel-tabset group="language"}
#### GUI
::::: grid
::: g-col-6
**Create a shaded relief map display in the layer manager**
1. In the layer manager, select **Add shaded relief map layer** (*d.shade* tool) from the **Add various raster map layers** menu button.
2. Enter the *elevation_relief* map into the **Name of shaded relief** text box.
3. Enter *Flagstaff_landsat8PCA_123_RGB* into the **Name of raster to drape over relief** text box.
4. If you set the **Percent to brighten** to 30 or 40, it will create a more visually appealing display.
:::
::: g-col-6


:::
:::::
**Create a shaded relief raster map**
1. Open the *r.shade* tool from the **/Raster/Terrain analysis/Apply shade to raster** menu.
2. Use the same entries as above for the layer manager and provide a name for the output map to be created (e.g., *PCA_relief*).
#### Command line
```{python}
r.shade shade=elevation_relief color=Flagstaff_landsat8PCA_123_RGB output=PCA_relief brighten=40
```
#### Python
```{python}
gs.run_command("r.shade",
shade="elevation_relief",
color="Flagstaff_landsat8PCA_123_RGB",
output="PCA_relief",
brighten=40)
```
::::::
{width="80%"}
### Visualizing image fusion and topography in NVIZ
Additionally, the PCA image fusion can be used to color a 3D visualization of topography in GRASS's **3D view** using the *NVIZ* module.
- Start by opening the **elevation DEM** in the layer manager. Make sure that no other maps except elevation are displayed.
- Select **3D view** from the pull-down menu at the top of the map display window. This should display the elevation map in 3D with the same shading seen in the 2D display.
{width="80%"}
- Next, select the **data** tab in the 3D display manager window (It might be easier to manage the 3D display if you 'tear' it off from the side bar into a separate window). Make sure the elevation map is selected in the **Raster map** box at the top of the data window.
- Scroll down a bit to the **Color** section and replace the elevation map with the RGB raster map of the PCA 1-3 image fusion (*Flagstaff_landsat8PCA_123_RGB*).
{width="80%"}
# Advanced remote sensing with GRASS
GRASS has many more features and tools for working with remote sensing data.
- For **satellite imagery**, there are tools under the [Imagery menu](https://grass.osgeo.org/grass-stable/manuals/imageryintro.html) and in [GRASS addons](https://grass.osgeo.org/grass-stable/manuals/addons/) for...
- Image [correction and calibration](https://grass.osgeo.org/grass-stable/manuals/imageryintro.html#radiometric-corrections)
- Image [georectification](https://grass.osgeo.org/grass-stable/manuals/imageryintro.html#geocoding-of-imagery-data))
- Machine learning algorithms for [unsurpervised and supervised image classification](https://grass.osgeo.org/grass-stable/manuals/imageryintro.html#image-classification) and [feature detection](https://grass.osgeo.org/grass-stable/manuals/addons/r.learn.ml2.html)
- [Statistical analysis](https://grass.osgeo.org/grass-stable/manuals/rasterintro.html#raster-map-statistics) and visualization as demonstrated in this tutorial
- Satellite **time series** can be transformed into **time cubes** for analysis with GRASS's unique [Temporal GIS](https://grass.osgeo.org/grass-stable/manuals/temporalintro.html) tools.
- For **aerial photography**, there are tools for...
- [Georectification](https://grass.osgeo.org/grass-stable/manuals/imageryintro.html#geocoding-of-imagery-data)
- 3D rectification and scanning distortion for correction for [orthophotography](https://grass.osgeo.org/grass-stable/manuals/i.ortho.photo.html)
- Image enhancement, including [neighborhood](https://grass.osgeo.org/grass-stable/manuals/r.neighbors.html), [convolving](https://grass.osgeo.org/grass-stable/manuals/r.mfilter.html), [edge detection](https://grass.osgeo.org/grass-stable/manuals/i.zc.html), and [fast fourier transform](https://grass.osgeo.org/grass-stable/manuals/i.fft.html) filters
- GRASS has an extensive suite of raster and vector tools for processing and visualizing [LiDAR data](https://grass.osgeo.org/grass-stable/manuals/vectorintro.html#lidar-data-processing), as well raster and vector import and processing of LiDAR data.
- There are multiple methods for [interpolation](https://grass.osgeo.org/grass-stable/manuals/rasterintro.html#raster-map-operations) of data points from **geophysical surveys**.
- For **3D geophysics** (e.g., electrical tomography or ground penetrating radar), GRASS offers a unique suite of true [3D voxel analysis tools](https://grass.osgeo.org/grass-stable/manuals/raster3dintro.html) with n-dimensional visualization in [NVIZ](https://grass.osgeo.org/grass-stable/manuals/wxGUI.nviz.html).
These and other tools make GRASS a rich and powerful geoprocessing environment for many remote sensing applications.