I made separate models for the Dark Subtraction model, separately for multispectral and panchromatic bands. Now I would like to combine these models into one and add NNDiffuse PS functions to it. I don't have a problem when I process two different models: one for DOS and one for pan sharpening. But I would like to combine these in one model and run everything once. I think that the issue is caused by the Aggregator and Extract Elements From Array. But I don't know how to change it. Still I get the error: "Parameter INPUT_HIGH_RESOLUTION_RASTER faild validation: Value must be a scalar ENVIRaster". In IDL the model looks like below: ; ----------------------------- ; Generated by the ENVI Modeler ; ENVI 5.5.1, API 3.3 ; ----------------------------- pro MyProgram compile_opt idl2, hidden on_error, 2 aggregator_1 = Dictionary() list_aggregator_1 = List() aggregator_2 = Dictionary() list_aggregator_2 = List() ; -------- ; Iterator ; -------- foreach iterator_2, raster_2, iterator_2_index do begin ; ----------------- ; Generate Filename ; ----------------- task_8 = ENVITask('GenerateFilename') task_8.number = iterator_2_index task_8.directory = "C:\" task_8.prefix = 'DSM_PAN_' task_8.random = !false task_8.Execute ; ----------------------- ; Radiometric Calibration ; ----------------------- task_5 = ENVITask('RadiometricCalibration') task_5.input_raster = iterator_2 task_5.Execute ; ----------------- ; Raster Statistics ; ----------------- task_6 = ENVITask('RasterStatistics') task_6.input_raster = task_5.output_raster task_6.Execute ; --------------------------- ; Dark Subtraction Correction ; --------------------------- task_7 = ENVITask('DarkSubtractionCorrection') task_7.values = task_6.min task_7.input_raster = task_5.output_raster task_7.output_raster_uri = task_8.output_filename task_7.Execute ; ---------- ; Aggregator ; ---------- list_aggregator_2.Add, task_7.output_raster, /EXTRACT aggregator_2.output = list_aggregator_2 endforeach ; -------- ; Iterator ; -------- foreach iterator_1, raster_1, iterator_1_index do begin ; ----------------- ; Generate Filename ; ----------------- task_4 = ENVITask('GenerateFilename') task_4.number = iterator_1_index task_4.directory = "C:\" task_4.prefix = 'DSM_' task_4.random = !false task_4.Execute ; ----------------------- ; Radiometric Calibration ; ----------------------- task_1 = ENVITask('RadiometricCalibration') task_1.input_raster = iterator_1 task_1.Execute ; ----------------- ; Raster Statistics ; ----------------- task_2 = ENVITask('RasterStatistics') task_2.input_raster = task_1.output_raster task_2.Execute ; --------------------------- ; Dark Subtraction Correction ; --------------------------- task_3 = ENVITask('DarkSubtractionCorrection') task_3.values = task_2.min task_3.input_raster = task_1.output_raster task_3.output_raster_uri = task_4.output_filename task_3.Execute ; ---------- ; Aggregator ; ---------- list_aggregator_1.Add, task_3.output_raster, /EXTRACT aggregator_1.output = list_aggregator_1 endforeach ; -------- ; Iterator ; -------- foreach iterator_3, aggregator_1.output, iterator_3_index do begin ; ----------------- ; Generate Filename ; ----------------- task_10 = ENVITask('GenerateFilename') task_10.number = iterator_3_index task_10.directory = "C:\" task_10.prefix = 'PAN_SH_' task_10.random = !false task_10.Execute ; --------------------------- ; Extract Elements from Array ; --------------------------- elementExtractor_1 = Dictionary() elementExtractor_1.output_element = aggregator_2.output[[iterator_3_index]] ; ------------------------ ; NNDiffuse Pan Sharpening ; ------------------------ task_9 = ENVITask('NNDiffusePanSharpening') task_9.output_raster_uri = task_10.output_filename task_9.input_low_resolution_raster = iterator_3 task_9.input_high_resolution_raster = elementExtractor_1.output_element task_9.Execute endforeach end
|