@@ -51,7 +51,7 @@ namespace parser {
5151 }
5252
5353 template <typename M, typename S>
54- static bool TryGetParameter (M& parameters, S&& name, std::string& out )
54+ static bool TryGetParameter (std::string& out, M& parameters, S&& name)
5555 {
5656 auto i = parameters.find (std::forward<S>(name));
5757 if (i == parameters.cend ())
@@ -60,10 +60,10 @@ namespace parser {
6060 return true ;
6161 }
6262
63- template <typename Map , typename S, typename O>
63+ template <typename M , typename S, typename O>
6464 static
6565 std::enable_if_t <std::is_floating_point<O>::value, bool >
66- TryGetParameter (Map& parameters, S&& name, O& out )
66+ TryGetParameter (O& out, M& parameters, S&& name )
6767 {
6868 auto i = parameters.find (std::forward<S>(name));
6969 if (i == parameters.cend ())
@@ -72,10 +72,10 @@ namespace parser {
7272 return true ;
7373 }
7474
75- template <typename Map , typename S, typename O>
75+ template <typename M , typename S, typename O>
7676 static
7777 std::enable_if_t <std::is_integral<O>::value && std::is_unsigned<O>::value, bool >
78- TryGetParameter (Map& parameters, S&& name, O& out )
78+ TryGetParameter (O& out, M& parameters, S&& name )
7979 {
8080 auto i = parameters.find (std::forward<S>(name));
8181 if (i == parameters.cend ())
@@ -84,10 +84,10 @@ namespace parser {
8484 return true ;
8585 }
8686
87- template <typename Map , typename S, typename O>
87+ template <typename M , typename S, typename O>
8888 static
8989 std::enable_if_t <std::is_integral<O>::value && std::is_signed<O>::value, bool >
90- TryGetParameter (Map& parameters, S&& name, O& out )
90+ TryGetParameter (O& out, M& parameters, S&& name )
9191 {
9292 auto i = parameters.find (std::forward<S>(name));
9393 if (i == parameters.cend ())
@@ -102,7 +102,7 @@ namespace parser {
102102 std::string value;
103103 double x;
104104
105- if (TryGetParameter (parameters, " ellps" , value )) {
105+ if (TryGetParameter (value, parameters, " ellps" )) {
106106 value = ToLowerCase (value);
107107 auto it = geom::custom_ellipsoids.find (value);
108108 if (it != geom::custom_ellipsoids.end ()) {
@@ -116,12 +116,12 @@ namespace parser {
116116 }
117117
118118 // Specific semi-major axis
119- TryGetParameter (parameters, " a" , ellps. a );
120- TryGetParameter (parameters, " b" , x );
119+ TryGetParameter (ellps. a , parameters, " a" );
120+ TryGetParameter (x, parameters, " b" );
121121 ellps.fromb (x);
122- TryGetParameter (parameters, " f" , x );
122+ TryGetParameter (x, parameters, " f" );
123123 ellps.fromf (x);
124- TryGetParameter (parameters, " rf" , ellps. f_inv );
124+ TryGetParameter (ellps. f_inv , parameters, " rf" );
125125
126126 return ellps;
127127 }
@@ -132,11 +132,11 @@ namespace parser {
132132 geom::Ellipsoid ellipsoid){
133133
134134 geom::TransverseMercatorParams p;
135- TryGetParameter (parameters, " lat_0" , p. lat_0 );
136- TryGetParameter (parameters, " lon_0" , p. lon_0 );
137- TryGetParameter (parameters, " k" , p. k );
138- TryGetParameter (parameters, " x_0" , p. x_0 );
139- TryGetParameter (parameters, " y_0" , p. y_0 );
135+ TryGetParameter (p. lat_0 , parameters, " lat_0" );
136+ TryGetParameter (p. lon_0 , parameters, " lon_0" );
137+ TryGetParameter (p. k , parameters, " k" );
138+ TryGetParameter (p. x_0 , parameters, " x_0" );
139+ TryGetParameter (p. y_0 , parameters, " y_0" );
140140 p.ellps = ellipsoid;
141141 auto projection = geom::GeoProjection::Make (p);
142142 projection.setPROJString (proj_string);
@@ -149,7 +149,7 @@ namespace parser {
149149 geom::Ellipsoid ellipsoid){
150150
151151 geom::UniversalTransverseMercatorParams p;
152- if (!TryGetParameter (parameters, " zone" , p. zone )) {
152+ if (!TryGetParameter (p. zone , parameters, " zone" )) {
153153 log_warning (" Missing 'zone' parameter for UTM projection. Using default value " + std::to_string (p.zone ));
154154 }
155155 p.north = (parameters.count (" south" ) > 0 ) ? false : true ;
@@ -177,14 +177,14 @@ namespace parser {
177177 geom::Ellipsoid ellipsoid){
178178
179179 geom::LambertConformalConicParams p;
180- TryGetParameter (parameters, " lon_0" , p. lon_0 );
181- TryGetParameter (parameters, " lat_0" , p. lat_0 );
182- if (!TryGetParameter (parameters, " lat_1" , p. lat_1 ))
180+ TryGetParameter (p. lon_0 , parameters, " lon_0" );
181+ TryGetParameter (p. lat_0 , parameters, " lat_0" );
182+ if (!TryGetParameter (p. lat_1 , parameters, " lat_1" ))
183183 log_warning (" Missing 'lat_1' parameter for LCC projection. Using default value " + std::to_string (p.lat_1 ));
184- if (!TryGetParameter (parameters, " lat_2" , p. lat_2 ))
184+ if (!TryGetParameter (p. lat_2 , parameters, " lat_2" ))
185185 log_warning (" Missing 'lat_2' parameter for LCC projection. Using default value " + std::to_string (p.lat_2 ));
186- TryGetParameter (parameters, " x_0" , p. x_0 );
187- TryGetParameter (parameters, " y_0" , p. y_0 );
186+ TryGetParameter (p. x_0 , parameters, " x_0" );
187+ TryGetParameter (p. y_0 , parameters, " y_0" );
188188 p.ellps = ellipsoid;
189189 auto projection = geom::GeoProjection::Make (p);
190190 projection.setPROJString (proj_string);
@@ -202,15 +202,15 @@ namespace parser {
202202
203203 static geom::GeoLocation CreateTransverseMercatorGeoReference (std::unordered_map<std::string, std::string> parameters){
204204 geom::GeoLocation result{0.0 , 0.0 , 0.0 };
205- TryGetParameter (parameters, " lat_0" , result. latitude );
206- TryGetParameter (parameters, " lon_0" , result. longitude );
205+ TryGetParameter (result. latitude , parameters, " lat_0" );
206+ TryGetParameter (result. longitude , parameters, " lon_0" );
207207 return result;
208208 }
209209
210210 static geom::GeoLocation CreateUniversalTransverseMercatorGeoReference (std::unordered_map<std::string, std::string> parameters){
211211 geom::GeoLocation result{0.0 , 0.0 , 0.0 };
212212 result.latitude = 0.0 ;
213- if (TryGetParameter (parameters, " zone" , result. longitude ))
213+ if (TryGetParameter (result. longitude , parameters, " zone" ))
214214 result.longitude = geom::Math::ToRadians (6 * result.longitude - 183 );
215215 return result;
216216 }
@@ -222,8 +222,8 @@ namespace parser {
222222
223223 static geom::GeoLocation CreateLamberConic2SPGeoReference (std::unordered_map<std::string, std::string> parameters){
224224 geom::GeoLocation result{0.0 , 0.0 , 0.0 };
225- TryGetParameter (parameters, " lat_0" , result. latitude );
226- TryGetParameter (parameters, " lon_0" , result. longitude );
225+ TryGetParameter (result. latitude , parameters, " lat_0" );
226+ TryGetParameter (result. longitude , parameters, " lon_0" );
227227 return result;
228228 }
229229
@@ -238,7 +238,7 @@ namespace parser {
238238
239239 // Get the projection type
240240 std::string proj;
241- if (!TryGetParameter (parameters, " proj" , proj )) {
241+ if (!TryGetParameter (proj, parameters, " proj" )) {
242242 log_warning (" cannot find the type of projection, using default transverse mercator" );
243243 return std::make_pair (
244244 CreateDefaultProjection (ellipsoid),
0 commit comments