CreatingDataSetInMemoryGivingDt.cpp
Go to the documentation of this file.
1 // TerraLib
2 #include "DataAccessExamples.h"
3 
5 
6 #include <terralib/memory.h>
7 
8 
9 // STL
10 #include <iostream>
11 
12 #include "boost/date_time/gregorian/gregorian.hpp"
13 
15 {
16  try
17  {
18  //////============= (1) Create a new data set type
19  ////
20  //////te::da::DataSetType* dt = new te::da::DataSetType("SoilMeasures");
21  ////te::da::DataSetType* dt = new te::da::DataSetType(datasetName);
22  ////
23  //////first property: measure_id
24  ////te::dt::SimpleProperty* prop01 = new te::dt::SimpleProperty("id", te::dt::INT32_TYPE, true);
25  ////prop01->setAutoNumber(true);
26  ////
27  //////second property: sensor_id
28  ////te::dt::SimpleProperty* prop02 = new te::dt::SimpleProperty("sensor", te::dt::INT32_TYPE, true);
29  ////
30  //////third property: location
31  ////te::gm::GeometryProperty* prop03 = new te::gm::GeometryProperty("location", 0, te::gm::PointType, true);
32  ////prop03->setSRID(4326);
33  ////
34  //////fourth property: measure_date
35  ////te::dt::DateTimeProperty* prop04 = new te::dt::DateTimeProperty("date", te::dt::DATE, te::dt::UNKNOWN, true);
36  ////
37  //////fifth property: measure_value
38  ////te::dt::NumericProperty* prop05 = new te::dt::NumericProperty("value", 7, 4, true);
39  ////
40  //////add properties into data set type
41  ////dt->add(prop01);
42  ////dt->add(prop02);
43  ////dt->add(prop03);
44  //////dt->setDefaultGeomProperty(prop03);
45  ////dt->add(prop04);
46  ////dt->add(prop05);
47  ////
48  //////define a primary key
49  ////te::da::PrimaryKey* pk = new te::da::PrimaryKey("soilmeasures_pk", dt);
50  ////pk->add(prop01);
51  ////
52  //////define a check constraint
53  ////te::da::CheckConstraint* cc = new te::da::CheckConstraint("measurevaluecc", dt);
54  ////cc->setExpression("measure_value>0");
55  ////
56  //////create index
57  ////te::da::Index* index01 = new te::da::Index("measure_date_idx", te::da::B_TREE_TYPE, dt);
58  ////index01->add(prop04);
59  ////
60  //////create spatial index
61  ////te::da::Index* index02 = new te::da::Index("measure_location_idx", te::da::R_TREE_TYPE, dt);
62  ////index02->add(prop03);
63 
64  //============= (2) Create a new data set with 9 measures
65 
67 
68  te::gm::Point* auxPoint1 = new te::gm::Point(23.5, 78.6, 4326);
69  te::mem::DataSetItem* dsItem01 = new te::mem::DataSetItem(ds);
70  dsItem01->setInt32(1, 233); //sensor_id
71  dsItem01->setGeometry(2, auxPoint1); //location
72 
73  boost::gregorian::date d1(boost::gregorian::greg_year(2010),boost::gregorian::greg_month(1),15);
74  te::dt::DateTime* datetime1 = new te::dt::Date(d1);
75 
76  dsItem01->setDateTime(3, datetime1); //measure_date
77  dsItem01->setNumeric(4, "65.89"); //measure_value
78 
79  te::gm::Point* auxPoint2 = new te::gm::Point(25.7, 80.5, 4326);
80  te::mem::DataSetItem* dsItem02 = new te::mem::DataSetItem(ds);
81  dsItem02->setInt32(1, 245); //sensor_id
82  dsItem02->setGeometry(2, auxPoint2); //location
83  dsItem02->setDateTime(3, static_cast<te::dt::DateTime*>(datetime1->clone())); //measure_date
84  dsItem02->setNumeric(4, "80.90"); //measure_value
85 
86  te::gm::Point* auxPoint3 = new te::gm::Point(24.6, 83.5, 4326);
87  te::mem::DataSetItem* dsItem03 = new te::mem::DataSetItem(ds);
88  dsItem03->setInt32(1, 255); //sensor_id
89  dsItem03->setGeometry(2, auxPoint3); //location
90  dsItem03->setDateTime(3, static_cast<te::dt::DateTime*>(datetime1->clone())); //measure_date
91  dsItem03->setNumeric(4, "87.90"); //measure_value
92 
93  boost::gregorian::date d2(boost::gregorian::greg_year(2010),boost::gregorian::greg_month(2),15);
94  te::dt::DateTime* datetime2 = new te::dt::Date(d2);
95 
96  te::gm::Point* auxPoint4 = new te::gm::Point(23.5, 78.6, 4326);
97  te::mem::DataSetItem* dsItem04 = new te::mem::DataSetItem(ds);
98  dsItem04->setInt32(1, 233); //sensor_id
99  dsItem04->setGeometry(2, auxPoint4); //location
100  dsItem04->setDateTime(3, datetime2); //measure_date
101  dsItem04->setNumeric(4, "90.89"); //measure_value
102 
103  te::gm::Point* auxPoint5 = new te::gm::Point(25.7, 80.5, 4326);
104  te::mem::DataSetItem* dsItem05 = new te::mem::DataSetItem(ds);
105  dsItem05->setInt32(1, 245); //sensor_id
106  dsItem05->setGeometry(2, auxPoint5); //location
107  dsItem05->setDateTime(3, static_cast<te::dt::DateTime*>(datetime2->clone())); //measure_date
108  dsItem05->setNumeric(4, "73.90"); //measure_value
109 
110  te::gm::Point* auxPoint6 = new te::gm::Point(24.6, 83.5, 4326);
111  te::mem::DataSetItem* dsItem06 = new te::mem::DataSetItem(ds);
112  dsItem06->setInt32(1, 255); //sensor_id
113  dsItem06->setGeometry(2, auxPoint6); //location
114  dsItem06->setDateTime(3, static_cast<te::dt::DateTime*>(datetime2->clone())); //measure_date
115  dsItem06->setNumeric(4, "45.90"); //measure_value
116 
117  boost::gregorian::date d3(boost::gregorian::greg_year(2010),boost::gregorian::greg_month(3),15);
118  te::dt::DateTime* datetime3 = new te::dt::Date(d3);
119 
120  te::gm::Point* auxPoint7 = new te::gm::Point(23.5, 78.6, 4326);
121  te::mem::DataSetItem* dsItem07 = new te::mem::DataSetItem(ds);
122  dsItem07->setInt32(1, 233); //sensor_id
123  dsItem07->setGeometry(2, auxPoint7); //location
124  dsItem07->setDateTime(3, datetime3); //measure_date
125  dsItem07->setNumeric(4, "76.89"); //measure_value
126 
127  te::gm::Point* auxPoint8 = new te::gm::Point(25.7, 80.5, 4326);
128  te::mem::DataSetItem* dsItem08 = new te::mem::DataSetItem(ds);
129  dsItem08->setInt32(1, 245); //sensor_id
130  dsItem08->setGeometry(2, auxPoint8); //location
131  dsItem08->setDateTime(3, static_cast<te::dt::DateTime*>(datetime3->clone())); //measure_date
132  dsItem08->setNumeric(4, "78.15"); //measure_value
133 
134  te::gm::Point* auxPoint9 = new te::gm::Point(24.6, 83.5, 4326);
135  te::mem::DataSetItem* dsItem09 = new te::mem::DataSetItem(ds);
136  dsItem09->setInt32(1, 255); //sensor_id
137  dsItem09->setGeometry(2, auxPoint9); //location
138  dsItem09->setDateTime(3, static_cast<te::dt::DateTime*>(datetime3->clone())); //measure_date
139  dsItem09->setNumeric(4, "50.32"); //measure_value
140 
141  //acrescentar esse metodo no data set em memoria!!!!
142  ds->add(dsItem01);
143  ds->add(dsItem02);
144  ds->add(dsItem03);
145  ds->add(dsItem04);
146  ds->add(dsItem05);
147  ds->add(dsItem06);
148  ds->add(dsItem07);
149  ds->add(dsItem08);
150  ds->add(dsItem09);
151 
152  return ds;
153 
154  }
155  catch(const std::exception& e)
156  {
157  std::cout << std::endl << "An exception has occurred when Creating DataSet In Memory Example: " << e.what() << std::endl;
158  return 0;
159  }
160  catch(...)
161  {
162  std::cout << std::endl << "An unexpected exception has occurred when Creating DataSet In Memory Example!" << std::endl;
163  return 0;
164  }
165 }
166 
167 
void setGeometry(std::size_t i, te::gm::Geometry *value)
It sets the value of the i-th property.
This file contains include headers for the memory data source of TerraLib.
A class that models the description of a dataset.
Definition: DataSetType.h:72
static te::dt::Date ds(2010, 01, 01)
te::da::DataSet * CreatingDataSetInMemoryGivingDt(te::da::DataSetType *dt)
void setNumeric(std::size_t i, const std::string &value)
It sets the value of the i-th property.
void add(DataSetItem *item)
It adds a new item to the dataset and takes its ownership.
void setInt32(std::size_t i, boost::int32_t value)
It sets the value of the i-th property.
Implementation of a random-access dataset class for the TerraLib In-Memory Data Access driver...
A point with x and y coordinate values.
Definition: Point.h:50
A base class for date data types.
Definition: Date.h:53
void setDateTime(std::size_t i, te::dt::DateTime *value)
It sets the value of the i-th property.
Examples on how to access/manipulate DataSources in TerraLib.
void DataSet()
static te::dt::TimeDuration dt(20, 30, 50, 11)
virtual AbstractData * clone() const =0
It returns a clone of this object.
An implementation of the DatasetItem class for the TerraLib In-Memory Data Access driver...
A dataset is the unit of information manipulated by the data access module of TerraLib.
A base class for date data types.