1 // This is brl/bpro/core/brad_pro/processes/brad_get_image_coverage_process.cxx
2 //:
3 // \file
4 //     get the image lower left corner and the upper right corner of the 'extent' of the satellite image
5 //
6 //
7 #include <bprb/bprb_func_process.h>
8 
9 #include <brad/brad_image_metadata.h>
10 
brad_get_image_coverage_process_cons(bprb_func_process & pro)11 bool brad_get_image_coverage_process_cons(bprb_func_process& pro)
12 {
13   std::vector<std::string> input_types;
14   input_types.emplace_back("brad_image_metadata_sptr"); // image metadata
15   std::vector<std::string> output_types;
16   output_types.emplace_back("double");
17   output_types.emplace_back("double");
18   output_types.emplace_back("double");
19   output_types.emplace_back("double");
20   output_types.emplace_back("double");
21   output_types.emplace_back("double");
22   return pro.set_input_types(input_types) && pro.set_output_types(output_types);
23 }
24 
brad_get_image_coverage_process(bprb_func_process & pro)25 bool brad_get_image_coverage_process(bprb_func_process& pro)
26 {
27   if (!pro.verify_inputs()) {
28     std::cout << pro.name() << ": WRONG inputs!!!" << std::endl;
29     return false;
30   }
31 
32   //get the inputs
33   brad_image_metadata_sptr meta = pro.get_input<brad_image_metadata_sptr>(0);
34 
35   double lower_left_lon  = meta->lower_left_.x();
36   double lower_left_lat  = meta->lower_left_.y();
37   double lower_left_elev = meta->lower_left_.z();
38   double upper_right_lon = meta->upper_right_.x();
39   double upper_right_lat = meta->upper_right_.y();
40   double upper_right_elev = meta->upper_right_.z();
41   // generate output
42   unsigned i = 0;
43   pro.set_output_val<double>(i++,  lower_left_lon);
44   pro.set_output_val<double>(i++,  lower_left_lat);
45   pro.set_output_val<double>(i++,  lower_left_elev);
46   pro.set_output_val<double>(i++, upper_right_lon);
47   pro.set_output_val<double>(i++, upper_right_lat);
48   pro.set_output_val<double>(i++, upper_right_elev);
49   return true;
50 }
51