TerraLib and TerraView Wiki Page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:documentation:mini_curso:dataaccess [2016/01/19 15:12]
gribeiro
wiki:documentation:mini_curso:dataaccess [2016/01/20 15:56] (current)
gribeiro
Line 1: Line 1:
-====== Data Access ======+ ====== Data Access ======
  
-**1.** Script CMake:+**1.** [[:​wiki:​documentation:​devguide:​data_access_module|Link para documentação do módulo Data Access]]. 
 + 
 +**2.** Script CMake:
 <file cmake CMakeLists.txt>​ <file cmake CMakeLists.txt>​
 cmake_minimum_required(VERSION 2.8.12) cmake_minimum_required(VERSION 2.8.12)
Line 34: Line 36:
 </​file>​ </​file>​
  
-**2.** Código:+**3.** Código:
 <file cpp main.cpp>​ <file cpp main.cpp>​
 // TerraLib // TerraLib
 #include <​terralib/​common.h>​ #include <​terralib/​common.h>​
 +#include <​terralib/​dataaccess.h>​
 #include <​terralib/​plugin.h>​ #include <​terralib/​plugin.h>​
  
Line 67: Line 70:
 } }
  
 +void PrintDataSet(std::​string datasetName,​ te::​da::​DataSet* dataset)
 +{
 +  if(dataset == 0)
 +  {
 +    std::cout << "The informed dataset is NULL!" << std::endl;
 +    return;
 +  }
 +
 +// this will be used just to count the items in the dataset
 +  int item = 0;
 +
 +// traverse the dataset and print each dataset item
 +  std::cout << "​DATASET:​ " << datasetName;​
 +
 +  while(dataset->​moveNext())
 +  {
 +    std::cout << std::endl << "ITEM NUMBER: " << item++ << " ======================="​ << std::endl;
 +
 +    for(std::​size_t i = 0; i < dataset->​getNumProperties();​ ++i)
 +    {
 +      std::cout << dataset->​getPropertyName(i) << ": " ;
 +
 +      if(dataset->​isNull(i))
 +      {
 +        std::cout << ​ std::endl;
 +        continue;
 +      }
 +
 +      std::cout << dataset->​getAsString(i) << std::endl;
 +    }
 +  }
 +}
 +
 +void ReadShapefile()
 +{
 +  std::​unique_ptr<​te::​da::​DataSource>​ ds = te::​da::​DataSourceFactory::​make("​OGR"​);​
 +
 +  std::​map<​std::​string,​ std::​string>​ connInfo;
 +  connInfo["​URI"​] = "/​home/​terralib5/​curso/​data/​shp/​munic_2001.shp";​
 +
 +  ds->​setConnectionInfo(connInfo);​
 +
 +  ds->​open();​
 +
 +  std::cout << "​Datasource is opened? "
 +            << std::​boolalpha
 +            << ds->​isOpened() << std::endl;
 +
 +// check point: what can be done with this datasource
 +  //​PrintDataSourceCapabilities(ds.get());​
 +
 +// check point: retrieving data from the datasource
 +  std::cout << "​\nDatasource has "
 +            << ds->​getNumberOfDataSets()
 +            << " datasources"​ << std::endl;
 +
 +  std::​vector<​std::​string>​ dsets = ds->​getDataSetNames();​
 +
 +  for (size_t i=0; i<​ds->​getNumberOfDataSets();​ ++i)
 +    std::cout << '​['​ << (i + 1)
 +              << "]: "
 +              << dsets[i]
 +              << std::endl;
 +
 +// check point: retrieving the data from a dataset of the datasource
 +  if(ds->​getNumberOfDataSets() == 0)
 +    return;
 +
 +  std::​unique_ptr<​te::​da::​DataSet>​ dataset = ds->​getDataSet(dsets[0]);​
 +
 +  PrintDataSet(dsets[0],​ dataset.get());​
 +}
  
 int main(int argc, char* argv[]) int main(int argc, char* argv[])
Line 73: Line 148:
   ​   ​
   LoadModules();​   LoadModules();​
 +
 +  ReadShapefile();​
  
  
Line 83: Line 160:
 </​file>​ </​file>​
  
-**3.** Opções do CMake:+**4.** Opções do CMake:
 <code cmake> <code cmake>
 -DCMAKE_BUILD_TYPE:​STRING="​Debug"​ -DCMAKE_BUILD_TYPE:​STRING="​Debug"​
Line 90: Line 167:
 </​code>​ </​code>​
  
-**4.** Variável de ambiente para execução:+**5.** Variável de ambiente para execução:
 <code bash> <code bash>
-LD_LIBRARY_PATH=/​mylibs/​terralib5/​mylibs/​lib/:/​home/​terralib5/​mylibs/​gdal2/​lib:/​home/​terralib5/​mylibs/​pgsql/​lib:/​home/​terralib5/​mylibs/​terralib5/​lib+LD_LIBRARY_PATH=/​home/​terralib5/​mylibs/​lib/:/​home/​terralib5/​mylibs/​gdal2/​lib:/​home/​terralib5/​mylibs/​pgsql/​lib:/​home/​terralib5/​mylibs/​terralib5/​lib
 </​code>​ </​code>​