VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtMetaFlightDescription.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: $ $Revision: $ $State: $
7 ******************************************************************************/
8 
12 
13 #pragma once
14 #include <vrvTerrain/vrvTerrain.h>
16 #include <map>
17 #include <string>
18 #include <boost/shared_ptr.hpp>
19 #include <matrix/vlVector.h>
20 class DtDegMinSec;
21 class DtCoordTransform;
22 namespace makVrv
23 {
24  class DtMetaFlightParser;
25  class DtLambertCoordinateConverter;
26 
30  {
31  public:
32 
35 
37  virtual ~DtMetaFlightDescription();
38 
40  void getPaths(std::vector<std::string>& paths);
41 
43  void parse(DtMetaFlightParser& parser);
44 
46  unsigned int numberOfGeometryDatasets() const;
47 
50  const std::string& geometryDatasetName(int index) const;
51 
53  const DtMetaFlightTypes::Position2D& geometryDatasetOrigin(
54  const std::string& dsName) const;
55 
57  const DtMetaFlightTypes::Position2D& geometryDatasetExtent(
58  const std::string& dsName) const;
59 
62  const double geometryDatasetRadius(const std::string& dsName) const;
63 
67  const std::string& geometryDatasetName(const std::string& dsName) const;
68 
71  const std::string& geometryDatasetTitle(const std::string& dsName) const;
72 
75  const std::string& geometryDatasetFileFormat(const std::string& dsName) const;
76 
78  DtMetaFlightTypes::CoordSysTypeSP geometryDatasetDataCoordinateSystem(
79  const std::string& dsName) const;
80 
83  const std::string& geometryDatasetFileNamePattern(const std::string& dsName) const;
84 
86  DtMetaFlightTypes::CoordSysTypeSP geometryDatasetGridCoordinateSystem(
87  const std::string& dsName) const;
88 
90  const DtMetaFlightTypes::HierarchyType& geometryDatasetGridHierarchyType(
91  const std::string& dsName) const;
92 
95  unsigned int numberOfGeometryGridLevels(const std::string& dsName) const;
96 
99  const std::string& geometryGridLevelName(const std::string& dsName,
100  int index) const;
101 
104  DtMetaFlightTypes::TileType geometryGridLevelTileType(
105  const std::string& dsName, int index) const;
106 
108  unsigned int geometryGridLevelColumns(const std::string& dsName,
109  int index) const;
110 
113  unsigned int geometryGridLevelColDivisions(const std::string& dsName,
114  int index) const;
115 
117  unsigned int geometryGridLevelRows(const std::string& dsName,
118  int index) const;
119 
122  unsigned int geometryGridLevelRowDivisions(const std::string& dsName,
123  int index) const;
124 
127  double geometryGridLevelSwitchIn(const std::string& dsName, int index) const;
128 
131  double geometryGridLevelSwitchOut(const std::string& dsName, int index) const;
132 
136  void geometryGridTileCenter(const std::string& dsName, unsigned int level,
137  unsigned int row, unsigned int column,
138  double& centerX, double& centerY, double& centerZ) const;
139 
142  static void convertPosition(
143  const DtMetaFlightTypes::CoordSysTypeSP& sourceCoordSystem,
144  const DtMetaFlightTypes::CoordSysTypeSP& destCoordSystem,
145  double& centerX, double& centerY, double& centerZ);
146 
150  void geometryGridTileOffset(const std::string& dsName, unsigned int level,
151  unsigned int row, unsigned int column,
152  double& offsetX, double& offsetY, double& offsetZ) const;
153 
157  std::string generateGeometryGridTileFilename(const std::string& dsName,
158  int index, unsigned int row, unsigned int column) const;
159 
161  unsigned int numberOfVirtualTextureDatasets() const;
162 
165  const std::string& virtualTextureDatasetName(int index) const;
166 
168  DtMetaFlightTypes::CoordSysTypeSP virtualTextureCoordinateSystem(
169  const std::string& dsName) const;
170 
173  DtMetaFlightTypes::Position2D virtualTextureDatasetOrigin(
174  const std::string& dsName) const;
175 
178  DtMetaFlightTypes::Position2D virtualTextureDatasetOrigin(
179  const std::string& dsName,
180  const DtMetaFlightTypes::CoordSysTypeSP& system) const;
181 
184  DtMetaFlightTypes::Position2D virtualTextureDatasetExtent(
185  const std::string& dsName) const;
186 
189  DtMetaFlightTypes::Position2D virtualTextureDatasetExtent(
190  const std::string& dsName,
191  const DtMetaFlightTypes::CoordSysTypeSP& system) const;
192 
195  const std::string& virtualTextureDatasetTitle(const std::string& dsName) const;
196 
199  const std::string& virtualTextureDatasetFileFormat(const std::string& dsName) const;
200 
203  const std::string& virtualTextureDatasetFileNamePattern(const std::string& dsName) const;
204 
207  unsigned int virtualTextureDatasetTileTexels(const std::string& dsName) const;
208 
211  const std::string& virtualTextureDatasetSubstitutionTextureName(
212  const std::string& dsName) const;
213 
216  unsigned int numberOfVirtualTextureGridLevels(const std::string& dsName) const;
217 
220  const std::string& virtualTextureGridLevelName(const std::string& dsName,
221  int index) const;
222 
224  unsigned int virtualTextureGridLevelColumns(const std::string& dsName,
225  int index) const;
226 
229  unsigned int virtualTextureGridLevelColDivisions(const std::string& dsName,
230  int index) const;
231 
233  unsigned int virtualTextureGridLevelRows(const std::string& dsName,
234  int index) const;
235 
238  unsigned int virtualTextureGridLevelRowDivisions(const std::string& dsName,
239  int index) const;
240 
244  std::string generateVirtualTextureFileName(const std::string& dsName,
245  int index, unsigned int row, unsigned int column) const;
246 
248  const std::string& virtualTexturePath() const;
249 
251  inline const DtMetaFlightTypes::Database* database() const
252  {
253  return myDatabase;
254  }
255 
256  struct StringOrInt
257  {
258  bool isString;
259  std::string s_data;
260  int i_data;
261 
262  void operator=(const std::string& str)
263  {
264  isString = true;
265  s_data = str;
266  }
267 
268  void operator=(int i)
269  {
270  isString = false;
271  i_data = i;
272  }
273  };
274  typedef std::map<std::string, StringOrInt> PatternMap;
275 
276  static std::string generateFileName(const std::string& filenamePattern,
277  const PatternMap& patternMap);
278 
279  protected:
280 
281  static void setLonDtDegMinSecFromDegrees(DtDegMinSec& dmslon, double deg);
282  static void setDtDegMinSecFromDegrees(DtDegMinSec& dms, double deg);
283  static void setLatDtDegMinSecFromDegrees(DtDegMinSec& dmslat, double deg);
284 
286  virtual void getLCCTileCenter(const std::string& dsName, unsigned int row, unsigned int column,
287  unsigned int rows, unsigned int columns,
288  double& centerX, double& centerY, double& centerZ)const;
289 
290  protected:
291  //This is a class hold the intermediate parameters
292  //Internal used to calculate the center for each grid
293  //for a LCC projection
295  {
296  public:
298  virtual ~LambertCCParameters();
299  void initialize(const std::string& dsName, const DtMetaFlightTypes::Origin& origin, const DtMetaFlightTypes::Extent& extent,
300  int rows, int columns,
301  DtMetaFlightTypes::ProjectedCoordSysSP projectedSourceCoordSys);
302  bool initialized();
303  double bottomLeftLon();
304  double bottomLeftLan();
305  double deltaWidth();
306  double deltaHeight();
307  void convertGeodeticToLCC(double lon, double lat, double& x, double& y, double& z);
308  protected:
310  std::string myDatabaseName;
311  double myDeltaWidth;
318  };
319 
320  //databaseName->LCCParameters
321  typedef std::map<std::string, LambertCCParameters> LCCParametersMap;
322 
323  std::string myFilePath;
324  std::string myDirOfFilePath;
326  std::string myVtFilePath;
327  std::string myDirOfVtFilePath;
330  };
331 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)