21 int32_t num_pixels =
l1rec->npix;
22 int32_t pixel_idx = -0;
23 int32_t band_idx = -0;
24 double rhos_530 = -0.0;
25 double rhos_570 = -0.0;
29 std::vector<double> rhos_values;
31 for (pixel_idx = 0; pixel_idx < num_pixels; pixel_idx++) {
33 band_idx =
l1rec->l1file->nbands * pixel_idx;
35 rhos_530 =
l1rec->rhos[band_idx + idx_530];
36 rhos_570 =
l1rec->rhos[band_idx + idx_570];
39 if (!rhos_values.empty())
41 rhos_values.push_back(rhos_530);
42 rhos_values.push_back(rhos_570);
43 double pixel_elevation =
l1rec->dem[pixel_idx];
46 if (
invalid_pixel(pixel_elevation, pixel_mask, rhos_values.data(), rhos_values.size())) {
51 float pri_val = (rhos_530 - rhos_570) / (rhos_530 + rhos_570);
65 int32_t num_pixels =
l1rec->npix;
66 int32_t pixel_idx = -0;
67 int32_t band_idx = -0;
68 double rhos_800 = -0.0;
69 double rhos_705 = -0.0;
73 std::vector<double> rhos_values;
75 for (pixel_idx = 0; pixel_idx < num_pixels; pixel_idx++) {
77 band_idx =
l1rec->l1file->nbands * pixel_idx;
79 rhos_800 =
l1rec->rhos[band_idx + idx_800];
80 rhos_705 =
l1rec->rhos[band_idx + idx_705];
83 if (!rhos_values.empty())
86 rhos_values.push_back(rhos_800);
87 rhos_values.push_back(rhos_705);
88 double pixel_elevation =
l1rec->dem[pixel_idx];
91 if (
invalid_pixel(pixel_elevation, pixel_mask, rhos_values.data(), rhos_values.size())) {
96 float cire_val = (rhos_800 / rhos_705) - 1;
111 int32_t num_pixels =
l1rec->npix;
112 int32_t pixel_idx = -0;
113 int32_t band_idx = -0;
114 double rhos_495 = -0.0;
115 double rhos_705 = -0.0;
116 double rhos_800 = -0.0;
121 std::vector<double> rhos_values;
123 for (pixel_idx = 0; pixel_idx < num_pixels; pixel_idx++) {
125 band_idx =
l1rec->l1file->nbands * pixel_idx;
127 rhos_495 =
l1rec->rhos[band_idx + idx_495];
128 rhos_705 =
l1rec->rhos[band_idx + idx_705];
129 rhos_800 =
l1rec->rhos[band_idx + idx_800];
132 if (!rhos_values.empty())
135 rhos_values.push_back(rhos_495);
136 rhos_values.push_back(rhos_705);
137 rhos_values.push_back(rhos_800);
138 double pixel_elevation =
l1rec->dem[pixel_idx];
141 if (
invalid_pixel(pixel_elevation, pixel_mask, rhos_values.data(), rhos_values.size())) {
146 float car_val = ((1 / rhos_495) - (1 / rhos_705)) * rhos_800;
161 int32_t num_pixels =
l1rec->npix;
162 int32_t pixel_idx = -0;
163 int32_t band_idx = -0;
164 double rhos_550 = -0.0;
165 double rhos_705 = -0.0;
166 double rhos_800 = -0.0;
172 std::vector<double> rhos_values;
174 for (pixel_idx = 0; pixel_idx < num_pixels; pixel_idx++) {
176 band_idx =
l1rec->l1file->nbands * pixel_idx;
178 rhos_550 =
l1rec->rhos[band_idx + idx_550];
179 rhos_705 =
l1rec->rhos[band_idx + idx_705];
180 rhos_800 =
l1rec->rhos[band_idx + idx_800];
183 if (!rhos_values.empty())
186 rhos_values.push_back(rhos_550);
187 rhos_values.push_back(rhos_705);
188 rhos_values.push_back(rhos_800);
189 double pixel_elevation =
l1rec->dem[pixel_idx];
192 if (
invalid_pixel(pixel_elevation, pixel_mask, rhos_values.data(), rhos_values.size())) {
197 float ari_val = ((1 / rhos_550) - (1 / rhos_705)) * rhos_800;
212 switch (product_number) {
226 printf(
"Error in %s; Unknown product specifier: %d\n", __FILE__, product_number);