examples/modis/main.cpp
Go to the documentation of this file.
1 // MODIS
2 #include "modis_dataset.h"
3 #include "modis_utils.h"
4 
5 // TerraLib
6 #include <terralib/common.h>
7 #include <terralib/geometry.h>
8 
9 #include <terralib/raster.h>
10 
11 // STL
12 #include <cstdlib>
13 #include <exception>
14 #include <iostream>
15 #include <memory>
16 
17 // Boost
18 #include <boost/timer/timer.hpp>
19 #include <boost/regex.hpp>
20 
21 #define TE_USE_GDAL 1
22 
24 {
26 
27  info = te::plugin::GetInstalledPlugin(TE_PLUGINS_PATH + std::string("/te.da.gdal.teplg.json"));
29 
31 }
32 
33 int main(int argc, char *argv[])
34 {
35  try
36  {
37 // Inicializa os modulos da TerraLib
39 
40 // Informa a necessidade de carga dinamica do driver GDAL
41  LoadModules();
42 
43 // Prepara os conjuntos de dados do banco de imagens
44  std::string product("MOD13Q1");
45  //boost::filesystem::path mpath("C:\\spatial-data\\modis\\MOD13");
46  boost::filesystem::path mpath(""TE_DATA_EXAMPLE_DIR"\\data\\modis\\MOD13");
47  ProdHVDate modis_files;
48 
49  msearch(mpath, product, "", modis_files);
50 
51  modis_dataset d(modis_files[product],
52  "HDF4_EOS:EOS_GRID:\"",
53  "\":MODIS_Grid_16DAY_250m_500m_VI:250m 16 days NDVI");
54 
55  {
56 
57 
58  double longitude = d.grid()->getExtent()->getCenter().x;
59  double latitude = d.grid()->getExtent()->getCenter().y;
60 
61  const unsigned char* values = 0;
62  const std::vector<boost::gregorian::date>* times = 0;
63 
64  boost::timer::cpu_timer timer;
65 
66  d.query(longitude, latitude, &values, &times);
67 
68  std::string wallt = timer.format();
69 
70  std::cout << "\ttimeline generated in: " << wallt << std::endl;
71 
72  modis_print(values, times);
73  }
74 
75  {
76  double longitude = d.grid()->getExtent()->getCenter().x;
77  double latitude = d.grid()->getExtent()->getCenter().y + d.grid()->getResolutionY() * 5;
78 
79  const unsigned char* values = 0;
80  const std::vector<boost::gregorian::date>* times = 0;
81 
82  boost::timer::cpu_timer timer;
83 
84  d.query(longitude, latitude, &values, &times);
85 
86  std::string wallt = timer.format();
87 
88  std::cout << "\ttimeline generated in: " << wallt << std::endl;
89 
90  modis_print(values, times);
91 
92  modis_print(values, times);
93  }
94 
95  {
96  double longitude = d.grid()->getExtent()->getCenter().x;
97  double latitude = d.grid()->getExtent()->getCenter().y + d.grid()->getResolutionY() * 3;
98 
99  const unsigned char* values = 0;
100  const std::vector<boost::gregorian::date>* times = 0;
101 
102  boost::timer::cpu_timer timer;
103 
104  d.query(longitude, latitude, &values, &times);
105 
106  std::string wallt = timer.format();
107 
108  std::cout << "\ttimeline generated in: " << wallt << std::endl;
109 
110  modis_print(values, times);
111 
112  modis_print(values, times);
113  }
114 
115 
117 
119  }
120  catch(const std::exception& e)
121  {
122  std::cout << std::endl << "An exception has occurried: " << e.what() << std::endl;
123 
124  std::cout << "tecle algo: " << std::endl;
125 
126  int ii = 0;
127 
128  std::cin >> ii;
129 
130  return EXIT_FAILURE;
131  }
132 
133 
134  std::cout << "tecle algo: " << std::endl;
135 
136  int ii = 0;
137 
138  std::cin >> ii;
139 
140  return EXIT_SUCCESS;
141 }
142 
const te::rst::Grid * grid() const
double y
y-coordinate.
Definition: Coord2D.h:114
double x
x-coordinate.
Definition: Coord2D.h:113
std::map< std::string, std::map< std::string, std::map< std::string, std::string > > > ProdHVDate
Definition: modis_utils.h:13
void query(const double &longitude, const double &latitude, const unsigned char **values, const std::vector< boost::gregorian::date > **times) const
double getResolutionY() const
Returns the grid vertical (y-axis) resolution.
Coord2D getCenter() const
It returns the rectangle&#39;s center coordinate.
void finalize()
It finalizes the TerraLib Platform.
static PluginManager & getInstance()
It returns a reference to the singleton instance.
static te::dt::DateTime d(2010, 8, 9, 15, 58, 39)
std::complex< double > times(std::complex< double > lhs, std::complex< double > rhs)
void initialize()
It initializes the TerraLib Platform.
te::gm::Envelope * getExtent()
Returns the geographic extension of the grid.
void LoadModules()
It loads the data source drivers.
This file contains include headers for the TerraLib Common Runtime module.
int main(int argc, char *argv[])
The basic information about a plugin.
This file contains include headers for the Vector Geometry model of TerraLib.
void modis_print(const unsigned char *values, const std::vector< boost::gregorian::date > *times)
Definition: modis_utils.cpp:54
void msearch(const boost::filesystem::path &mpath, std::string product, std::string hv, ProdHVDate &fnames)
Definition: modis_utils.cpp:11
TEPLUGINEXPORT PluginInfo * GetInstalledPlugin(const std::string &pluginFilePath)
It returns information about a given plugin provided its plugin configuration file name or dir...