Files
BRDF/Flexbrdf/examples/netcdf_glt.md
2026-04-10 16:46:45 +08:00

4.6 KiB

Processing NetCDF file

Other than ENVI and HDF5, NetCDF support is added for reading and writing. Meanwhile, Geographic Lookup Table (GLT) of raster image can be used to reproject input image.

Configuration json file is slightly different from the basic configuration (an example for topo correction: nc_topo_correct_config.json).

Topograhic Correction

NetCDF and its OBS files can be accessed to implement the basic normalization like topographic correction. Configuration file can be setup like below. anc_files can be either nc format or envi format.

   "anc_files": {
      "/data/EMIT/EMIT_L2A_RFL_001_20231101T024133_2330502_014.nc": {
         "path_length": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            0
         ],
         "sensor_az": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            1
         ],
         "sensor_zn": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            2
         ],
         "solar_az": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            3
         ],
         "solar_zn": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            4
         ],
         "phase": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            5
         ],
         "slope": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014_nc_warp_v1.bsq",
            0
         ],
         "aspect": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014_nc_warp_v1.bsq",
            1
         ],
         "cosine_i": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014_nc_warp_v1.bsq",
            2
         ],
         "utc_time": [
            "/data/EMIT/EMIT_L1B_OBS_001_20231101T024133_2330502_014.nc",
            9
         ]
      } 
   },

There is a sample image correct script for nc files and GLT ( image_correct_export_nc.py).

python ./scripts/image_correct_with_glt.py path/to/the/configuration/json/file

Before and after topo correction

Before

After

External GLT

Many NetCDF files have internal GLT, but sometime a geo-rectification is needed, and a new corrected GLT can be used for warping the pixels to new geographic positions.

If internal GLT is used, set a blank glt file path

     ... ...
   }, 
   "glt_files": { },
   "export": {
    ... ...

External GLT can be specified in the configuration file, it should have at least two bands: GLT_X and GLT_Y

     ... ...
   }, 
   "glt_files": {
      "/data/EMIT/EMIT_L2A_RFL_001_20231101T024133_2330502_014.nc": { 
         "glt_x": ["/data/EMIT/EMIT_L2A_RFL_001_20231101T024133_2330502_014_glt.bsq",1],
         "glt_y": ["/data/EMIT/EMIT_L2A_RFL_001_20231101T024133_2330502_014_glt.bsq",0]
      }
   },
   "export": {
    ... ...

To use GLT to warp image or not is controlled by use_glt in export.

   "export": {
      ...
      "image": true,
      "use_glt":true,
      ...
   },   

Export without using GLT

RGB without GLT

Export warped image with GLT

RGB with GLT

To export NetCDF image or not is controlled by image_format in export. "envi" is the default output format, if image_format is not set. If "netcdf" is selected, information from "outside_metadata" will be written in the output. Information can either be in a dictionary in the config file or a json file.

   "export": {
      ...
      "image_format": "netcdf",
      ...
   },  
   ...
   "outside_metadata":{ "XXX":"XXXXX", ... },
   ...

Alternatively, it can be

   "export": {
      ...
      "image_format": "netcdf",
      ...
   },  
   ...
   "outside_metadata":"XXX/XXXX.json",
   ... 

Trait Prediction

Output format of trait prediction image file can also be "netcdf", which is "envi" by default.

There is a sample trait export script for nc files and GLT ( trait_estimate_nc.py).

Accordingly, several items in the trait configuration file has to be set for this purpose.

{
    "file_type": "ncav",
    "export_type":"netcdf",
    "use_glt":false,
    "output_dir": "...",
    "outside_metadata": "...",
    ...
}