public final class cwautonav
extends java.lang.Object
The autonavigation tool automatically determines a navigation correction based on earth image data.
cwautonav - automatically determines a navigation correction based on earth image data.
cwautonav [OPTIONS] locations-file variable input
-c, --correlation=FACTOR
-f, --fraction=FRACTION
-h, --help
-H, --height=PIXELS
-m, --match=PATTERN
-M, --minboxes=N
-s, --search=LEVEL
-S, --separation=DISTANCE
-t, --test
-v, --verbose
-w, --width=PIXELS
--version
The autonavigation tool automatically determines a navigation correction based on earth image data. The algorithm is as follows:
Note that because of the autonavigation algorithm design, there are a number of limitations:
Note that satellite channel data or channel-derived variables should be corrected with navigation but GIS-derived variables such as coastline and lat/lon grid graphics should not be corrected. Applying a navigation correction simply establishes a mapping between desired and actual data coordinates -- it does not change the gridded data values themselves. Once a data file has been autonavigated successfully, other CoastWatch tools in this package will take the correction into account when reading the data.
See the cwnavigate tool in this package for details on how to set a navigation correction manually, or to reset the existing navigation.
0 on success, > 0 on failure. Possible causes of errors:
The following example shows an automatic correction of an East Coast CWF (IMGMAP format) file containing AVHHR channel 2 data. A total of 3 navigation boxes are specified in a text file, and the size of each box set to 60 by 60 pixels. The output shows that 2 of the 3 boxes were successful and a final navigation correction of (rows, cols) = (-3, 1) was applied to the file.
phollema$ cwautonav -v --width 60 --height 60 navbox.txt avhrr_ch2 2004_064_1601_n17_er_c2.cwf cwautonav: Reading input 2004_064_1601_n17_er_c2.cwf cwautonav: Testing box at 37.0503 N, 76.2111 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.33 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 44.2783 N, 66.1377 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.436 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.965 at offset = (-3, 1) cwautonav: Box offset = (-3, 1) cwautonav: Testing box at 45.1985 N, 65.9262 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.814 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.987 at offset = (-3, 1) cwautonav: Box offset = (-3, 1) cwautonav: Mean offset = (-3, 1) cwautonav: Applying navigation correction
The next example below shows the import and automatic correction of multiple CWF files from the Gulf of Mexico. The AVHRR channel 1, channel 2, SST, and cloud mask variables are first imported to an HDF file. The automatic correction then runs using only data from AVHRR channel 2 which provides high contrast between land and water during the day. The final correction is applied to all variables in the input file. This combination of import and autonavigation is a convenient way of correcting a set of older CWF data files all at once, using just data from AVHRR channel 2.
phollema$ cwimport -v --match '(avhrr.*|sst|cloud)' 2004_313_1921_n16_mr*.cwf 2004_313_1921_n16_mr.hdf cwimport: Reading input 2004_313_1921_n16_mr_c1.cwf cwimport: Creating output 2004_313_1921_n16_mr.hdf cwimport: Converting file [1/4], 2004_313_1921_n16_mr_c1.cwf cwimport: Writing avhrr_ch1 cwimport: Converting file [2/4], 2004_313_1921_n16_mr_c2.cwf cwimport: Writing avhrr_ch2 cwimport: Converting file [3/4], 2004_313_1921_n16_mr_cm.cwf cwimport: Writing cloud cwimport: Converting file [4/4], 2004_313_1921_n16_mr_d7.cwf cwimport: Writing sst phollema$ cwautonav -v --width 60 --height 60 navbox2.txt avhrr_ch2 2004_313_1921_n16_mr.hdf cwautonav: Reading input 2004_313_1921_n16_mr.hdf cwautonav: Testing box at 26.7734 N, 82.1731 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.239 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.945 at offset = (-2, 1) class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient correlation cwautonav: Box failed cwautonav: Testing box at 29.1666 N, 83.0324 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.54 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.985 at offset = (-2, 1) cwautonav: Box offset = (-2, 1) cwautonav: Testing box at 29.9141 N, 84.3543 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 4.514 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.976 at offset = (-2, 0) cwautonav: Box offset = (-2, 0) cwautonav: Testing box at 30.3258 N, 88.1352 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.006 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.954 at offset = (-3, 0) cwautonav: Box offset = (-3, 0) cwautonav: Testing box at 27.8423 N, 82.5433 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.59 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.953 at offset = (-2, 1) cwautonav: Box offset = (-2, 1) cwautonav: Mean offset = (-2.25, 0.5) cwautonav: Applying navigation correction
Another example below shows the correction of a Hawaii AVHRR HDF file using many 15 by 15 pixel navigation boxes distributed throughout the islands. AVHRR channel 2 data is used to compute the optimal offset, and the final correction is applied only to AVHRR sensor bands and derived variables.
phollema$ cwautonav -v --match '(avhrr.*|sst|cloud)' --width 15 --height 15 navbox3.txt avhrr_ch2 2005_042_0051_n16_hr.hdf cwautonav: Reading input 2005_042_0051_n16_hr.hdf cwautonav: Testing box at 21.7885 N, 160.2259 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.537 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.9856 N, 160.0938 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.395 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.6033 N, 158.2847 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.562 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.7144 N, 157.9678 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.982 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.0961 N, 157.3207 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.517 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.2448 N, 157.2547 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.252 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.2076 N, 156.9774 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.236 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.973 at offset = (-2, 0) cwautonav: Box offset = (-2, 0) cwautonav: Testing box at 21.1581 N, 156.7001 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.293 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 20.9225 N, 157.0698 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.448 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 20.7115 N, 156.9642 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.506 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.3067 N, 158.1130 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.601 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 21.3067 N, 157.6508 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.593 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 20.5374 N, 156.7001 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 5.142 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.978 at offset = (-2, 0) cwautonav: Box offset = (-2, 0) cwautonav: Testing box at 20.5499 N, 156.5680 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.834 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.947 at offset = (-2, -1) class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient correlation cwautonav: Box failed cwautonav: Testing box at 20.5996 N, 156.4360 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.285 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 20.8108 N, 156.5152 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.092 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 20.9349 N, 156.4756 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 3.629 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.969 at offset = (-2, -1) cwautonav: Box offset = (-2, -1) cwautonav: Testing box at 20.8357 N, 156.1190 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.46 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 20.2635 N, 155.8813 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 2.522 class noaa.coastwatch.util.NavigationOffsetEstimator: Image correlation = 0.964 at offset = (-2, 0) cwautonav: Box offset = (-2, 0) cwautonav: Testing box at 19.5140 N, 154.7985 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.64 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 19.7392 N, 155.0230 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.833 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 19.7267 N, 155.1022 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.688 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 18.9119 N, 155.6965 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.378 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 19.8642 N, 155.9342 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.583 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 19.0375 N, 155.8813 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.638 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 22.0349 N, 159.7901 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.919 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Testing box at 22.1826 N, 159.3279 W class noaa.coastwatch.util.NavigationOffsetEstimator: Land/water class separation distance = 1.496 class noaa.coastwatch.util.NavigationOffsetEstimator: Insufficient separation cwautonav: Box failed cwautonav: Mean offset = (-2, -0.25) cwautonav: Applying navigation correction
Modifier and Type | Method and Description |
---|---|
static void |
main(java.lang.String[] argv)
Performs the main function.
|