Initial commit
This commit is contained in:
99
Flexbrdf/scripts/configs/trait_estimate_json_generate.py
Normal file
99
Flexbrdf/scripts/configs/trait_estimate_json_generate.py
Normal file
@ -0,0 +1,99 @@
|
||||
'''Template script for generating trait_estimate configuration JSON files.
|
||||
'''
|
||||
|
||||
import os
|
||||
import json
|
||||
import glob
|
||||
|
||||
home = os.path.expanduser("~")
|
||||
|
||||
#Output path for configuration file
|
||||
config_file = "/.json"
|
||||
|
||||
config_dict = {}
|
||||
config_dict['file_type'] = 'envi'
|
||||
config_dict["output_dir"] = './'
|
||||
config_dict['bad_bands'] =[[300,400],[1337,1430],[1800,1960],[2450,2600]]
|
||||
|
||||
# Input data settings for NEON
|
||||
#################################################################
|
||||
# config_dict['file_type'] = 'neon'
|
||||
# images= glob.glob("*.h5")
|
||||
# images.sort()
|
||||
# config_dict["input_files"] = images
|
||||
|
||||
# Input data settings for ENVI
|
||||
#################################################################
|
||||
''' Only difference between ENVI and NEON settings is the specification
|
||||
of the ancillary datasets (ex. viewing and solar geometry). All hytools
|
||||
functions assume that the ancillary data and the image date are the same
|
||||
size, spatially, and are ENVI formatted files.
|
||||
|
||||
The ancillary parameter is a dictionary with a key per image. Each value
|
||||
per image is also a dictionary where the key is the dataset name and the
|
||||
value is list consisting of the file path and the band number.
|
||||
'''
|
||||
|
||||
config_dict['file_type'] = 'envi'
|
||||
aviris_anc_names = ['path_length','sensor_az','sensor_zn',
|
||||
'solar_az', 'solar_zn','phase','slope',
|
||||
'aspect', 'cosine_i','utc_time']
|
||||
images= glob.glob("*img")
|
||||
images.sort()
|
||||
config_dict["input_files"] = images
|
||||
|
||||
config_dict["anc_files"] = {}
|
||||
anc_files = glob.glob("*ort")
|
||||
anc_files.sort()
|
||||
for i,image in enumerate(images):
|
||||
config_dict["anc_files"][image] = dict(zip(aviris_anc_names,
|
||||
[[anc_files[i],a] for a in range(len(aviris_anc_names))]))
|
||||
|
||||
config_dict['num_cpus'] = len(images)
|
||||
|
||||
# Assign correction coefficients
|
||||
##########################################################
|
||||
''' Specify correction(s) to apply and paths to coefficients.
|
||||
'''
|
||||
|
||||
config_dict['corrections'] = ['topo','brdf']
|
||||
|
||||
topo_files = glob.glob("*topo.json")
|
||||
topo_files.sort()
|
||||
config_dict["topo"] = dict(zip(images,topo_files))
|
||||
|
||||
brdf_files = glob.glob("*brdf.json")
|
||||
brdf_files.sort()
|
||||
config_dict["brdf"] = dict(zip(images,brdf_files))
|
||||
|
||||
# Select wavelength resampling type
|
||||
##########################################################
|
||||
'''Wavelength resampler will only be used if image wavelengths
|
||||
and model wavelengths do not match exactly
|
||||
|
||||
See image_correct_json_generate.py for options.
|
||||
|
||||
'''
|
||||
config_dict["resampling"] = {}
|
||||
config_dict["resampling"]['type'] = 'cubic'
|
||||
|
||||
# Masks
|
||||
##########################################################
|
||||
'''Specify list of masking layers to be appended to the
|
||||
trait map. Each will be placed in a separate layer.
|
||||
|
||||
For no masks provide an empty list: []
|
||||
'''
|
||||
config_dict["masks"] = [["ndi", {'band_1': 850,'band_2': 660,
|
||||
'min': 0.1,'max': 1.0}],
|
||||
['neon_edge',{'radius': 30}]]
|
||||
|
||||
# Define trait coefficients
|
||||
##########################################################
|
||||
models = glob.glob('*.json')
|
||||
models.sort()
|
||||
config_dict["trait_models"] = models
|
||||
|
||||
with open(config_file, 'w') as outfile:
|
||||
json.dump(config_dict,outfile)
|
||||
|
||||
Reference in New Issue
Block a user