attic/unittest/srs/TsSrs.cpp
Go to the documentation of this file.
1 #include "TsSrs.h"
2 
3 
4 #include <terralib/common.h>
5 #include <terralib/srs.h>
6 #include <terralib/srs/Module.h>
7 
8 #include <string>
9 #include <iomanip>
10 #include <iostream>
11 
13 
15 {
16  bool resultBool;
17  std::string resultString;
18  std::pair<std::string,unsigned int> resultPair;
19 
20  // --- Test the maps and finds
21  std::string gp4txt = "proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m";
22  std::string gwkt = "PROJCS[\"unnamed\",GEOGCS[\"unnamed ellipse\",DATUM[\"unknown\",SPHEROID[\"unnamed\",6378137,0]],PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]],PROJECTION[\"Mercator_2SP\"],PARAMETER[\"standard_parallel_1\",0],PARAMETER[\"central_meridian\",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]";
23  CPPUNIT_ASSERT_NO_THROW(te::srs::SpatialReferenceSystemManager::getInstance().add("google",gp4txt,gwkt,96,"sr-org"));
24 
25  resultBool = te::srs::SpatialReferenceSystemManager::getInstance().recognizes(96,"sr-org");
26  CPPUNIT_ASSERT(resultBool);
27 
28  resultString = te::srs::SpatialReferenceSystemManager::getInstance().getName(96,"sr-org");
29  CPPUNIT_ASSERT(!resultString.empty());
30 
31  resultString = te::srs::SpatialReferenceSystemManager::getInstance().getP4Txt(96,"sr-org");
32  CPPUNIT_ASSERT(resultString == gp4txt);
33 
34  resultString = te::srs::SpatialReferenceSystemManager::getInstance().getWkt(96,"sr-org");
35  CPPUNIT_ASSERT(resultString == gwkt);
36 
37  CPPUNIT_ASSERT_NO_THROW(resultPair = te::srs::SpatialReferenceSystemManager::getInstance().getIdFromWkt(gwkt));
38  CPPUNIT_ASSERT(resultPair.second == 96 && resultPair.first == "sr-org");
39 
40  CPPUNIT_ASSERT_NO_THROW(resultPair = te::srs::SpatialReferenceSystemManager::getInstance().getIdFromP4Txt(gp4txt));
41  CPPUNIT_ASSERT(resultPair.second == 96 && resultPair.first == "sr-org");
42 
44  CPPUNIT_ASSERT_THROW(resultPair = te::srs::SpatialReferenceSystemManager::getInstance().getIdFromWkt(gwkt),te::srs::Exception);
45 
46  resultBool = te::srs::SpatialReferenceSystemManager::getInstance().recognizes(96,"sr-org");
47  CPPUNIT_ASSERT(resultBool == false);
48 
49  // --- Test access to data inserted by initialization from files
50 
52  CPPUNIT_ASSERT(!resultString.empty());
53 
54  resultPair = te::srs::SpatialReferenceSystemManager::getInstance().getIdFromName(resultString);
55  CPPUNIT_ASSERT(resultPair.second == TE_SRS_SAD69);
56 
58  CPPUNIT_ASSERT(!resultString.empty());
59 
60  resultPair = te::srs::SpatialReferenceSystemManager::getInstance().getIdFromName(resultString);
61  CPPUNIT_ASSERT(resultPair.second == TE_SRS_WGS84_UTM_ZONE_25S);
62 
63  te::srs::SpatialReferenceSystemPtr resultSRS; // = 0;
64  CPPUNIT_ASSERT_NO_THROW (resultSRS = te::srs::SpatialReferenceSystemManager::getInstance().getSpatialReferenceSystem(TE_SRS_SAD69));
65  CPPUNIT_ASSERT(resultSRS.get());
66 
67  // --- Test the iterator access
68  size_t aux1=0;
70  te::srs::SpatialReferenceSystemManager::iterator> its = te::srs::SpatialReferenceSystemManager::getInstance().getIterators();
71  while(its.first != its.second)
72  {
73  ++aux1;
74  ++its.first;
75  }
76  CPPUNIT_ASSERT(aux1 = te::srs::SpatialReferenceSystemManager::getInstance().size());
77 }
78 
80 {
81  std::auto_ptr<te::srs::Converter> converter(new te::srs::Converter());
82 // te::srs::Converter* converter = new te::srs::Converter();
83 
84  CPPUNIT_ASSERT_NO_THROW(converter->setSourceSRID(TE_SRS_WGS84));
85  CPPUNIT_ASSERT_NO_THROW(converter->setTargetSRID(TE_SRS_WGS84_UTM_ZONE_23S));
86 
87  double xin = -45.0;
88  double yin = 0.0;
89  double xout;
90  double yout;
91 
92  converter->convert(xin,yin,xout,yout);
93 
94  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,xout,0.1);
95  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,yout,0.1);
96 
97  xin = 500000;
98  yin = 10000000;
99 
100  converter->invert(xin,yin,xout,yout);
101 
102  CPPUNIT_ASSERT_DOUBLES_EQUAL(-45.0,xout,0.001);
103  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0,yout,0.001);
104 
105  xin = -45.0;
106  yin = 0.0;
107 
108  converter->convert(xin,yin);
109 
110  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,xin,0.1);
111  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,yin,0.1);
112 
113  xin = 500000;
114  yin = 10000000;
115 
116  converter->convertToGeographic(xin, yin, TE_SRS_WGS84_UTM_ZONE_23S);
117  CPPUNIT_ASSERT_DOUBLES_EQUAL(-45.0,xin,0.001);
118  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0,yin,0.001);
119 
120  xin = -45.0;
121  yin = 0.0;
122 
123  converter->convertToProjected(xin, yin, TE_SRS_WGS84_UTM_ZONE_23S);
124  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,xin,0.1);
125  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,yin,0.1);
126 
127  std::vector<double> vxin;
128  std::vector<double> vyin;
129 
130  vxin.push_back(-45.0); vxin.push_back(-45.0); vxin.push_back(-45.0);
131  vyin.push_back(0); vyin.push_back(0); vyin.push_back(0);
132 
133  std::vector<double> vxout; vxout.resize(3);
134  std::vector<double> vyout; vyout.resize(3);
135 
136  converter->convert(&vxin[0],&vyin[0],&vxout[0],&vyout[0],3);
137 
138  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,vxout[0],0.1);
139  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,vyout[0],0.1);
140  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,vxout[1],0.1);
141  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,vyout[1],0.1);
142  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,vxout[2],0.1);
143  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,vyout[2],0.1);
144 
145  converter->convert(&vxin[0],&vyin[0],3);
146 
147  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,vxin[0],0.1);
148  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,vyin[0],0.1);
149  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,vxin[1],0.1);
150  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,vyin[1],0.1);
151  CPPUNIT_ASSERT_DOUBLES_EQUAL(500000,vxin[2],0.1);
152  CPPUNIT_ASSERT_DOUBLES_EQUAL(10000000,vyin[2],0.1);
153 
154  vxin.clear();
155  vyin.clear();
156  vxout.clear();
157  vyout.clear();
158 }
159 
161 {
162  CPPUNIT_ASSERT_NO_THROW(te::srs::SpatialReferenceSystemManager::getInstance().clear());
163 }
164 
166 {
167 }
168 
169 
171 {
172 }
This file contains include headers for TerraLib Spatial Reference System module.
Definition: TsSrs.h:6
boost::multi_index::nth_index< srs_set, 0 >::type::iterator iterator
An iterator by SRS <id,authority>
#define TE_SRS_SAD69
#define TE_SRS_WGS84_UTM_ZONE_25S
static SpatialReferenceSystemManager & getInstance()
It returns a reference to the singleton instance.
std::unique_ptr< SpatialReferenceSystem > SpatialReferenceSystemPtr
#define TE_SRS_WGS84_UTM_ZONE_23S
void tearDown()
It finalizes the environment after a test case (actually a method) had run.
A Converter is responsible for the conversion of coordinates between different Coordinate Systems (CS...
Definition: Converter.h:53
void setUp()
It sets the environment for a test case (actually a method).
This file contains include headers for the TerraLib Common Runtime module.
CPPUNIT_TEST_SUITE_REGISTRATION(TsSrs)
#define TE_SRS_WGS84