DataSetGetExtent.cpp
Go to the documentation of this file.
1 // Examples
2 #include "DataAccessExamples.h"
3 
4 // TerraLib
6 
7 // STL
8 #include <iostream>
9 
11 {
12 // Let's get a DataSet called 'br_munic_2001' in the 'public' schema
13 // and retrieve its extent
14  {
15  std::unique_ptr<te::da::DataSet> dataset = transactor->getDataSet("public.br_munic_2001");
16 
17  std::size_t pos = te::da::GetFirstPropertyPos(dataset.get(), te::dt::GEOMETRY_TYPE);
18  std::unique_ptr<te::gm::Envelope> extent = dataset->getExtent(pos);
19 
20  std::cout << std::endl
21  << "public.br_munic_2001 - extent = "
22  << extent->m_llx << ", "
23  << extent->m_lly << ", "
24  << extent->m_urx << ", "
25  << extent->m_ury << std::endl;
26  }
27 
28 // now we will retrieve all cities that contains a given point and then retrieves its extent
29  {
30  te::gm::Point pt(-43.6107606714293, -20.3913548070123, 4291);
31 
32  std::unique_ptr<te::da::DataSet> dataset = transactor->getDataSet("public.br_munic_2001", "geom",&pt, te::gm::INTERSECTS);
33 
34  std::size_t pos = te::da::GetFirstPropertyPos(dataset.get(), te::dt::GEOMETRY_TYPE);
35  std::unique_ptr<te::gm::Envelope> extent = dataset->getExtent(pos);
36 
37  std::cout << std::endl
38  << "public.br_munic_2001 with pt spatial filter - extent = "
39  << extent->m_llx << ", "
40  << extent->m_lly << ", "
41  << extent->m_urx << ", "
42  << extent->m_ury << std::endl;
43  }
44 
45 // now we will retrieve all cities that contains a given point and then retrieves its extent
46  {
47  te::gm::Point pt(-43.6107606714293, -20.3913548070123, 4291);
48 
49  std::unique_ptr<te::da::DataSet> dataset = transactor->getDataSet("public.br_munic_2001", "geom",&pt, te::gm::INTERSECTS);
50 
51  std::size_t pos = te::da::GetFirstPropertyPos(dataset.get(), te::dt::GEOMETRY_TYPE);
52  std::unique_ptr<te::gm::Envelope> extent = dataset->getExtent(pos);
53 
54  std::cout << std::endl
55  << "public.br_munic_2001 with pt spatial filter - extent = "
56  << extent->m_llx << ", "
57  << extent->m_lly << ", "
58  << extent->m_urx << ", "
59  << extent->m_ury << std::endl;
60  }
61 
62 //******ARRUMAR o te::map::DataSetLayer ?????????????????
63 //////// now we will retrieve all cities and then we will refine with cities that contains a given point
64 ////// {
65 ////// //te::da::DataSet* dataset = transactor->getDataSet("public.br_munic_2001");
66 ////// std::unique_ptr<te::map::DataSetLayer> layer(new te::map::DataSetLayer("public.br_munic_2001"));
67 //////
68 ////// te::gm::Point pt(-43.6107606714293, -20.3913548070123, 4291, 0 );
69 //////
70 ////// //te::da::DataSet* dataset = layer->getData(pt, te::gm::INTERSECTS);
71 ////// std::unique_ptr<te::da::DataSet> dataset = layer->getData("geom",&pt, te::gm::INTERSECTS);
72 //////
73 ////// //dataset->setFilter(&pt, te::gm::INTERSECTS);
74 ////// std::size_t pos = te::da::GetFirstPropertyPos(dataset.get(), te::dt::GEOMETRY_TYPE);
75 ////// std::unique_ptr<te::gm::Envelope> extent = dataset->getExtent(pos);
76 //////
77 ////// std::cout << std::endl
78 ////// << "public.br_munic_2001 refined with pt spatial filter - extent = "
79 ////// << extent->m_llx << ", "
80 ////// << extent->m_lly << ", "
81 ////// << extent->m_urx << ", "
82 ////// << extent->m_ury << std::endl;
83 ////// }
84 //////
85 //////
86 //////// now we will retrieve all cities that intersects a given box
87 ////// {
88 ////// te::gm::Envelope box(-43.9329795837402, -20.6328010559082, -43.4036407470703, -20.1612071990967);
89 //////
90 ////// //te::da::DataSet* dataset = transactor->getDataSet("public.br_munic_2001", &box, te::gm::INTERSECTS);
91 ////// std::unique_ptr<te::map::DataSetLayer> layer(new te::map::DataSetLayer("public.br_munic_2001"));
92 ////// te::da::DataSet* dataset = layer->getData(box, te::gm::INTERSECTS);
93 //////
94 ////// std::size_t pos = te::da::GetFirstPropertyPos(dataset, te::dt::GEOMETRY_TYPE);
95 ////// std::unique_ptr<te::gm::Envelope> extent = dataset->getExtent(pos);
96 //////
97 ////// std::cout << std::endl
98 ////// << "public.br_munic_2001 box spatial filter - extent = "
99 ////// << extent->m_llx << ", "
100 ////// << extent->m_lly << ", "
101 ////// << extent->m_urx << ", "
102 ////// << extent->m_ury << std::endl;
103 //////
104 ////// //delete dataset;
105 //////
106 ////// //delete extent;
107 ////// }
108 //////
109 //////// now we will retrieve all cities and then refine with a box filter
110 ////// {
111 ////// // te::da::DataSet* dataset = transactor->getDataSet("public.br_munic_2001");
112 ////// std::unique_ptr<te::map::DataSetLayer> layer(new te::map::DataSetLayer("public.br_munic_2001"));
113 //////
114 ////// te::gm::Envelope box(-43.9329795837402, -20.6328010559082, -43.4036407470703, -20.1612071990967);
115 //////
116 ////// //dataset->setFilter(&box, te::gm::INTERSECTS);
117 ////// te::da::DataSet* dataset = layer->getData(box, te::gm::INTERSECTS);
118 //////
119 ////// std::size_t pos = te::da::GetFirstPropertyPos(dataset, te::dt::GEOMETRY_TYPE);
120 ////// std::unique_ptr<te::gm::Envelope> extent = dataset->getExtent(pos);
121 //////
122 ////// std::cout << std::endl
123 ////// << "public.br_munic_2001 refined by a box spatial filter - extent = "
124 ////// << extent->m_llx << ", "
125 ////// << extent->m_lly << ", "
126 ////// << extent->m_urx << ", "
127 ////// << extent->m_ury << std::endl;
128 //////
129 ////// //delete dataset;
130 //////
131 ////// //delete extent;
132 ////// }
133 }
134 
A layer with reference to a dataset.
A point with x and y coordinate values.
Definition: Point.h:50
Examples on how to access/manipulate DataSources in TerraLib.
A DataSourceTransactor can be viewed as a connection to the data source for reading/writing things in...
virtual std::unique_ptr< DataSet > getDataSet(const std::string &name, te::common::TraverseType travType=te::common::FORWARDONLY, bool connected=false, const te::common::AccessPolicy accessPolicy=te::common::RAccess)=0
It gets the dataset identified by the given name. A dataset can be connected or disconnected. A connected dataset, after its creation through the data source transactor, continues to depend on the connection given by its associated data source. Differently, a disconnected dataset, after its creation, no more depends of the connection given by the data source, and it continues to live after the connection has been released to the data source.
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
void DataSetGetExtent(te::da::DataSourceTransactor *transactor)
An example showing how to retrieve the extent of a DataSet.