Bathymetry and water column correction
LANDSAT 8 OLIP 
at Mulroy Bay, Ireland
Image courtesy of the U.S. Geological Survey
 
Using the Panchromatic band for water column correction
to derive water depth and spectral bottom signature:

Landsat 8 OLIP bandset used for this work
Purple=1Blue=2Green=3PAN=4Red=5NIR=6 and SWIR1=7

Work done july 2018
GSD 15 m
 
 
 
 

My environment
You should have the same

 
Antislash in the command line
You shall need to replace all '@@' by two antislashes
Hyphen in the command line
  • For a character string inside a command line to be read,
    • it must start with a hyphen: -Argument/...
  • Any other character string is ignored
@ sign
  • to disable ar argument: use the @ sign:
    • @CP/199.53/179.76/12.02_0.75m_KIKJ=0.250
  • to enable an argument: remove the @ sign: CP/199.53/179.76/12...........
    • and ensure the hyphen is there: -CP/199.53/179.76/12..........
#You can copy from this file and paste into your script
#You need to replace all "@@" by "" in your script
#-MakePIX/Pisa: for a fresh start, 4SM shall purge your directory, then stop. 
#Then you must restore -MakePIX/PISA for normal processing. 
  
10 minutes
Syntax_MalePIX                                     Syntax_AutoCAL 
 
 #LINE_1: build the database, import data, create mask_SE, run the AutoCalibration
nice -20  ./4SM.8.07 -Process/nosu  -Origin/Tarawa_Kiribati                                                             @@
-DB/tarawa-subset/27_1S_0s_0s/3_1/650_600/718.069_169.231                                                       @@
-Mis/Tarawa/Kiribati/Spot/XS/NA/bOA/UTM_19_008/0.02_0.02/01_JAN_1986                                   @@
-MakePIX/pISA                                                                                                                                  @@
-Import/v/dTM/data*tarawa-full/dbnc_3_0s_0s_0s/R1630_L1860/Origin_709.049_182.231_0_0/chIn1,3/chOut1,3/import.shp  @@
-AutoCAL/R2_0.95/Land_-5_1.18_3s/mBPL4/GlintM10                                                                        @@
@-DN393/65/3CloudShadow  @-DN185/550/5Lsw @-DNshp @-DN430/388/5/beach                           
 
exit
#Below is the list of your actions for LINE_1, in that order
1 Did you set correct path for launching OpenEV?
1 Did you export data*tarawa-full.tif to data*tarawa-full.pix?
1 Compress mask_10.shp
1 Change for -MakePIX/Pisa
1 Run the AutoCAL script: for a fresh start, 4SM shall purge your directory, then stop
1 Look at your barebone directory
6:40==========
2 Change for -MakePIX/pISA
2 Run the AutoCAL script: import and scale data, make mask, then auto-calibration
2 AutoCalibration only needs minor adjustments: this does not happen all too often though
2 KIKJ regressor: see http://www.watercolumncorrection.com/help-AutoCal.php#regressor
8:40==========
2 Change from -AutoCAL/R2_0.95/... to -AutoCAL/R2_1.00/...
3 Run the AutoCAL script: this is a more real life result, which badly needs to be adjusted
9:30==========
4 Disable #LINE_1 and #exit
4 END LINE1
 

15 minutes

 #LINE_2: direct from AutoCal.txt      mBPL=4      Deglinter===
#Following is the simplified AutoCal CommandLine=====mBPL=4 ==on Sun May 20 13:03:42 2018
nice -20  ./4SM.8.07 -Process/nosu/20_May_2018  -Origin/Tarawa_Kiribati                    @@
-dB/tarawa-subset/27_1S_0s_0s/3_1/650_600/718.069_169.231                                     @@
-Mis/Tarawa/Kiribati/Spot/XS/NA/bOA/UTM_+19_008/0.0200_0.0200/1_JAN_1986        @@
-LS/00255/255/255                                                                                                         @@
-Lsw/027.4/014.8/006.5_Lsw_AutoCal                                                                            @@
-dLsw/00.0/000.0/000.0_dLsw                                                                                        @@
@dLsw/000.0/000.0/000.0                                                                                             @@
-Lw/0001.5/000.0/000.0_Lw_AutoCal                                                                             @@
-M/@0001/00002/00003_M                                                                                            @@
-Lm/0001.0/001.0/255.0_Lm                                                                                          @@
-LsM/199.5/179.8/166.8_LsM_AutoCal                                                                           @@
@CP/181.4/120.5/12.0_0.75m_KIKJ=0.250                                                                    @@
-KK/1_2_0.2500/Knir4.5/CoefK_1.0/mask_3                                                                    @@
-Z/NA0.00d/nDR_0_1000_zDTM/mask_3                                                                        @@
-B/tclNe/cNorm2.50/LBref200_100/Bmin0/cLM1.00                                                      @@
-deglint/vrbaD/GlintM10                                                                                                @@
-extract/v/rawBDH/FullBDH/MapBPL/NIRband3/NIRmax255/mBPL4    /mask_3             @@
-Calibrate/voAI/BDSNpzG/BDh_12_13                                                                           @@
-Model/v/rt1.00/runWV2/sharpen_s/dTM/ZM30/mask_x                                                  @@
-Smooth/1/d/smart-    -LL/10                                                                                           @@
@-DN300/100/3/comment @-DDshp @-DNshp @-Eshp @-E/1/650/1/600                       @@
 
exit    
 
#Below is the list of your actions for LINE_2, in that order
1 Disable #LINE 1 and #exit
1 Run the -Calibrate/... script, direct from the AutoCalibrator
3:55==========
2 Disable the -calibrate/... argument
2 Enable the -Deglint/... argument, to run the Deglinter
2 Check that Smoothing is enabled in -Smooth/1/d/smart+ argument
2 Check that TOAflag is diasbled in -B/tclNe/... argument
2 Run the Deglinter script
2 Use tarawa-subset.opf in OpenEV to view a BOA TCC of deglinted data in channels 22, 23 and 24
2 Too many pixels are not deglinted: threshold GlintM10 is too low
2 Change from -Deglint/.../GlintM10 to -Deglint/.../GlintM50; save tarawa-subset.opf
2 Run the Deglinter script: deglinting clouds is nonsense!
2 GlintM13 would remove glint and haze, and leave the clouds unchanged
2 Change form -Deglint/vrbaD/GlintM0  to -Deglint/vrbaD/GlintM13
2 Run the Deglinter script
4:40==========
3 Disable the -Smooth/... argument
3 Run the Deglinter script: no smoothing applied
5:40==========
4 Change for TOA in -B/TclNe/.... argument
4 Run the Deglinter script
4 Use tarawa-subset.opf in OpenEV to view a TOA TCC of deglinted data in channels 22, 23 and 24
4 Compare TOA_raw_TCC    with    TOA_deglinted_TCC
7:05==========
5 Set a rectangular shapefile E.shp
5 Add/Enable a -Eshp argument in your command line
5 Change from .../GlintM13 to .../GlintM0 in -Deglint/... argument
5 Run the Deglint script and launch OpenEV.
5 Use tarawa-subset.opf in OpenEV to view a TOA TCC of deglinted data in channels 22, 23 and 24
5 Processed only inside -E.shp window: GlintM=0, therefore no deglinting applied in that window
9:40==========
6 Disable -Eshp argument
6 Add/Enable a -E70/610/150/320  argument
6 Run the Deglinter script and launch OpenEV:
6 Processed only inside -E70/610/150/320 window: GlintM=0, therefore no deglinting applied in that window
10:55==========
7 Change for BOA in -B/tclNe/.... argument
7 Run the Deglinter script and lauchh OpenEV:
7 Processed inside -E70/610/150/320 window: GlintM=0, therefore no deglinting applied in that window which is now BOA
12:00==========
8 Disable @-E70/610/150/320 window
8 Modify the glint.shp shapefile to include/exclude the cloud
8 Erase the textfile tarawa-subset_m0_255.gli, to force collecting a new set of glint regressions
8 Change from .../GlintM0 to .../GlintM13 in -Deglint/... argument
8 Run the Deglinter script: glint regressions are virtually the same
8 END LINE 2
17 minutes
Syntax_ProfileAB
 
#LINE_3: run the Profiler on profile_1.shp==================
#From last LINE_2==================================
nice -20  ./4SM.8.07 -Process/nosu/22_Apr_2018  -Origin/Tarawa_Kiribati                               @@
-dB/tarawa-subset/27_1S_0s_0s/3_1/650_600/718.069_169.231                                              @@
-Mis/Tarawa/Kiribati/Spot/XS/NA/bOA/UTM_+19_008/0.0200_0.0200/1_JAN_1986                 @@
-Lsw/027.4/014.8/006.5_Lsw_AutoCal                                                                                     @@
-dLsw/00.0/000.0/000.0_dLsw                                                                                                @@
@dLsw/000.0/000.0/000.0                                                                                                     @@
-Lw/0001.5/000.0/000.0_Lw_AutoCal                                                                                      @@
-M/@000001/00002/00003_M                                                                                                 @@
-Lm/0001.0/001.0/255.0_Lm                                                                                                  @@
-LsM/199.5/179.8/166.8_LsM_AutoCal                                                                                      @@
@CP/199.53/179.76/12.02_0.75m_KIKJ=0.250                                                                         @@
-KK/1_2_0.2500/Knir4.5/CoefK_1.0/mask_3                                                                              @@
-Z/NA0.00d/nDR_0_1000_zDTM/mask_3                                                                                   @@
-B/tclNe/cNorm2.50/Bmin0/cLM1.00                                                                                         @@
-Deglint/vrbaD/GlintM0    13                                                                                                     @@
-extract/v/rawBDH/FullBDH/NIRband3/NIRmax255/mBPL4 /mask_3                                          @@
-calibrate/voAI/BDSNpzG/BDh_12_13                                                                                        @@
-Model/v/rt1.00/runWV2/sharpen_s/dTM/ZM30/mask_3                                                               @@
-smooth/1/d/smart-      -LL/10                                                                                                       @@
@-DN300/100/3/comment @-DDshp @-DNshp @-Eshp @-E/1/650/1/600     @-E70/610/150/320   @@
 
exit
#Below is the list of your actions for LINE_3, in that order
1 Disable #LINE 2 and #exit
1 Append/enable a -ProfileAB/Lzrvwbc/profile_1/chAB_1_2_3 argument
1 Enable waypoints: change from .../Lzrvwbc/... to .../LzrvWbc/...
1 Erase tarawa-subset_m0_255.gli
1 Modify glint.shp to exclude the cloud
1 Disable -smooth/...: no smoothing
1 Disable Deglinter:  -deglint/... argument: we shall run the Profiler
1 Run the Profiler script: Lswnir=6.5 is too high in the cloud shadow at waypoint 4
1 Change manually from -dLsw/00.0/000.0/000.0 to -dLsw/00.0/000.0/0-1.0
1 Run the Profiler script: deep water radiance Lsw 25.9, 13.9, and 5.5
6:00==========
2 Change from -dLsw/00.0/000.0/00-1.0 to -dLsw/00.0/000.0/0002.0
2 Run the Profiler script: deep water radiance Lsw 30.4, 16.5, and 8.5
2 Therefore estimates for Lw+Lskydome are  4.5, 2.6, and 3.0
2 Lsw=La+Lw+Lsd.........30.4....16.5....8.5
2 Lw.....................1.5.....0.0....0.0
2 Lsd MIE................3.5.....2.6....3.0   aerosols: variations are mostly noise
2 La..RAYLEIGH..........25.9....13.9....5.5
2 Change back to -dLsw/00.0/000.0/0-1.0
2 Run the Profiler script 
8:35==========
3 Change for profile_2  in -ProfileAB/.../profile_2/... argument
3 Change from .../GlintM0 to .../GlintM13 in -deglint/... argument
3 Run the Profiler script: 
3 At....waypoint 2: a small cloud not deglinted
3 At....waypoint 3: a coral head shoal
3 After.waypoint 4: very shallow pixels are not deglinted
11:25==========
4 Change from -ProfileAB/LzrvWbc/... to -ProfileAB/lZrvWbc/... to plot computed depth
4 Change from -ProfileAB/.../profile_2/chAB_1_2_3 to -ProfileAB/.../profile_2    /chAB_1_2_3
4 Add a .../LBref170_100/... in -B/tclNe/cNorm2.50/LBref170_100/... for the One-band case
4 Change from -M/@000001/... to -M/0000001/... to enable the One-band case
4 Change from -Lm/0001.0/001.0/255.0 to -Lm/0001.0/004.0/020.0
4 Run the Profiler script: 
4 Auto-calibration is potentially bad, but modeling yields a result anyway!!!!
14:40==========
5 Change from -smooth/1/d/smart- to -Smooth/5/d/Smart-
5 Change from .../lZrvWbc/... to .../lZrvWBc/... in -ProfileAB/... argument: to enable ploting the bottom reflectance
5 Enable plotting Red reflectance: -ProfileAB/.../chAB_2
5 Run the Profiler script: 
5 Auto-calibration is potentially bad, but modeling yields a result anyway!!!!
5 END LINE3
22 minutes
Syntax_Extract           Syntax_Calibrate
 
#LINE_4: run the Extractor/Calibrator mBPL=4   =====
#From end LINE3+++++++++++++++++++++++++++++++
nice -20  ./4SM.8.07 -Process/nosu/22_Apr_2018  -Origin/Tarawa_Kiribati                            @@
-dB/tarawa-subset/27_1S_0s_0s/3_1/650_600/718.069_169.231                                            @@
-Mis/Tarawa/Kiribati/Spot/XS/NA/bOA/UTM_+19_008/0.0200_0.0200/1_JAN_1986               @@
-Lsw/027.4/014.8/006.5_Lsw_AutoCal                                                                                    @@
-dLsw/00.0/000.0/0-1.0_dLsw                                                                                                @@
@dLsw/000.0/000.0/000.0                                                                                                     @@
-Lw/0001.5/000.0/000.0_Lw_AutoCal                                                                                      @@
-M/0000001/00002/00003_M                                                                                                 @@
-Lm/0001.0/004.0/020.0_Lm                                                                                                  @@
-LsM/199.5/179.8/166.8_LsM_AutoCal                                                                                    @@
@CP/199.53/179.76/12.02_0.75m_KIKJ=0.250                                                                         @@
-KK/1_2_0.2500/Knir4.5/CoefK_1.0/mask_3                                                                              @@
-Z/NA0.00d/nDR_0_1000_zDTM/mask_3                                                                                   @@
-B/tclNe/cNorm2.50/LBref170_100/Bmin0/cLM1.00                                                                 @@
-deglint/vrbaD/GlintM13                                                                                                             @@
-extract/v/rawBDH/FullBDH/NIRband3/NIRmax255/mBPL4 /mask_3                                           @@
-calibrate/voAI/BDSNpzG/BDh_12_13                                                                                           @@
-Model/v/rt1.00/runWV2/sharpen_s/dTM/ZM30/mask_3                                                                 @@
-Smooth/1/d/smart-      -LL/10                                                                                                         @@
@-DN300/100/3/comment @-DDshp @-DNshp @-Eshp @-E/1/650/1/600     @-E70/610/150/320   @@
-ProfileAB/lZrvWBc/profile_2/chAB_2   1_2_3

exit

#Below is the list of your actions for LINE_4, in that order
1 Disable #LINE 3 and #exit
1 Change back from -Lm/0001.0/004.0/020.0    to -Lm/0001.0/001.0/255.0
1 Disable @ProfileAB/...
1 Enable -Extract/... and -Calibrate/...
1 Run the Extract/Calibrate script
3:20==========
2 Disable -extract/...
2 Change from -Calibrate/.../BDSNpzG/... to -Calibrate/.../BDSNpzg/..., to disable Ghost BPL pixels
2 Run the Calibrate script
4:45==========
3 Change from -B/..../cLM1.00 to -B/..../cLM0.87   to decrease LsM
3 Run the Calibrate script to get a NewLsM
5:45==========
4 Copy the NewLsM from your terminal, and paste it your script
4 Then disable CoefLM ; default=1.0
4 Run the Calibrate script
7:45==========
5 Increase K1/K2 from 0.25 to 0.29
5 Run the Calibrate script: we get a very nice linear fit the BPL from Z~=1 m to Z~=7 m
8:45==========
6 Decrease Knir from 4.5 to 3.5 to get a better fit
6 Run the Calibrate script: we get a better fit of the BPL
9:50==========
7 Look on your terminal for a calibration pixel at Z=0.75m: -CP/0157.2/103.4/015.7_0.75m
7 Copy that -CP/0157.2/103.4/015.7_0.75m argument in your script
7 Run the Calibrate script: the model is under tight control
11:20==========
8 Change from -Lm/0001.0/001.0/255.0 to -Lm/0001.0/001.0/020.0  to set LmNIR at 5.5+13~=20
8 This threshold shall allow the NIR solution for non-deglinted pixels
8 Disable -calibrate/..., then Run the Model script
8 Use tarawa-subset.opf in OpenEV to view results then  in channels 7, 9 and 28
15:25==========
9 Change from -Lm/0001.0/001.0/020.0 to -Lm/0001.0/004.0/020.0 to set Lmred at 4  
9 This threshold shall prevent the clutter/noise
9 Run the Model script: the clutter has gone
17:25==========
10 Check that .../LBref170_100/... is present in -B/tclNe/cNorm2.50/LBref170_100/... argument
10 Check that the One-band case is enabled in -M/0000001/00002/00003 argument
10 Run the Model script. See channel 5 in OpenEV: One-band case is green
19:25==========
11 Set Lmgreen at 2 in -Lm/0002.0/001.0/020.0 argument to prevent the clutter
11 Run the Model script: the clutter has gone
20:45==========
12 Enable Profile_2 in -ProfileAB/lZrvWBc/profile_2/chAB_2
12 Run the Profiler script
12 END LINE4
 



Créer un site
Créer un site