SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GeoConvHelper.h
Go to the documentation of this file.
1 /****************************************************************************/
9 // static methods for processing the coordinates conversion for the current net
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
12 // Copyright (C) 2001-2013 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 #ifndef GeoConvHelper_h
23 #define GeoConvHelper_h
24 
25 
26 // ===========================================================================
27 // included modules
28 // ===========================================================================
29 #ifdef _MSC_VER
30 #include <windows_config.h>
31 #else
32 #include <config.h>
33 #endif
34 
35 #include <map>
36 #include <string>
37 #include <utils/geom/Position.h>
38 #include <utils/geom/Boundary.h>
39 
40 #ifdef HAVE_PROJ
41 #include <proj_api.h>
42 #endif
43 
44 
45 // ===========================================================================
46 // class declarations
47 // ===========================================================================
48 class OptionsCont;
49 class PositionVector;
50 
51 
52 // ===========================================================================
53 // class definitions
54 // ===========================================================================
60 public:
61 
66 
69  GeoConvHelper(const std::string& proj, const Position& offset,
70  const Boundary& orig, const Boundary& conv, int shift = 0, bool inverse = false);
71 
72 
75 
76 
82  static void addProjectionOptions(OptionsCont& oc);
83 
85  static bool init(OptionsCont& oc);
86 
88  static void init(const std::string& proj,
89  const Position& offset,
90  const Boundary& orig,
91  const Boundary& conv,
92  int shift = 0);
93 
98  return myProcessing;
99  }
100 
101 
105  static void computeFinal();
106 
107 
111  static const GeoConvHelper& getFinal() {
112  return myFinal;
113  }
114 
115 
118  static void setLoaded(const GeoConvHelper& loaded);
119 
120 
123  static void resetLoaded();
124 
126  void cartesian2geo(Position& cartesian) const;
127 
132  bool x2cartesian(Position& from, bool includeInBoundary = true);
133 
135  bool x2cartesian_const(Position& from) const;
136 
138  bool usingGeoProjection() const;
139 
141  bool usingInverseGeoProjection() const;
142 
144  void moveConvertedBy(SUMOReal x, SUMOReal y);
145 
147  const Boundary& getOrigBoundary() const;
148 
150  const Boundary& getConvBoundary() const;
151 
153  void setConvBoundary(const Boundary& boundary) {
154  myConvBoundary = boundary;
155  }
156 
158  const Position getOffset() const;
159 
161  const Position getOffsetBase() const;
162 
164  const std::string& getProjString() const;
165 
166 private:
173  };
174 
176  std::string myProjString;
177 
178 #ifdef HAVE_PROJ
179  projPJ myProjection;
181 #endif
182 
185 
187  double myGeoScale;
188 
191 
194 
197 
200 
203 
206 
209 
211  static int myNumLoaded;
212 
215 
218 
219 };
220 
221 
222 #endif
223 
224 /****************************************************************************/
225 
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
void setConvBoundary(const Boundary &boundary)
sets the converted boundary
static GeoConvHelper myProcessing
coordinate transformation to use for input conversion and processing
bool x2cartesian_const(Position &from) const
Converts the given coordinate into a cartesian using the previous initialisation. ...
~GeoConvHelper()
Destructor.
Position myOffset
The offset to apply.
static GeoConvHelper & getProcessing()
the coordinate transformation to use for input conversion and processing
Definition: GeoConvHelper.h:97
bool x2cartesian(Position &from, bool includeInBoundary=true)
Boundary myOrigBoundary
The boundary before conversion (x2cartesian)
static void setLoaded(const GeoConvHelper &loaded)
sets the coordinate transformation loaded from a location element
static GeoConvHelper myLoaded
coordinate transformation loaded from a location element
static void resetLoaded()
resets loaded location elements
bool myUseInverseProjection
Information whether inverse projection shall be used.
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:48
double myGeoScale
The scaling to apply to geo-coordinates.
static void computeFinal()
compute the location attributes which will be used for output based on the loaded location data...
bool usingGeoProjection() const
Returns whether a transformation from geo to metric coordinates will be performed.
static methods for processing the coordinates conversion for the current net
Definition: GeoConvHelper.h:59
static GeoConvHelper myFinal
coordinate transformation to use for writing the location element and for tracking the original coord...
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
A list of positions.
ProjectionMethod myProjectionMethod
Information whether no projection shall be done.
std::string myProjString
A proj options string describing the proj.4-projection to use.
const std::string & getProjString() const
Returns the network offset.
static bool init(OptionsCont &oc)
Initialises the processing and the final instance using the given options.
const Position getOffsetBase() const
Returns the network base.
const Boundary & getConvBoundary() const
Returns the converted boundary.
static void addProjectionOptions(OptionsCont &oc)
Adds projection options to the given container.
GeoConvHelper(OptionsCont &oc)
Constructor based on the stored options.
Boundary myConvBoundary
The boundary after conversion (x2cartesian)
static int myNumLoaded
the numer of coordinate transformations loaded from location elements
A storage for options typed value containers)
Definition: OptionsCont.h:108
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
const Position getOffset() const
Returns the network offset.
#define SUMOReal
Definition: config.h:221
const Boundary & getOrigBoundary() const
Returns the original boundary.
bool usingInverseGeoProjection() const
Returns the information whether an inverse transformation will happen.
void moveConvertedBy(SUMOReal x, SUMOReal y)
Shifts the converted boundary by the given amounts.
GeoConvHelper & operator=(const GeoConvHelper &)
assignment operator.