VR-Forces 4.2 Class Documentation
gdbVectorNetworkFeatureSet.h
Go to the documentation of this file.
1 
2 
3 
4 
5 #pragma once
6 
7 #include <features/featureSet.h>
8 #include <features/feature.h>
9 #include <features/query.h>
10 #include <gdb/specMgr.h>
11 #include <iosfwd>
12 
13 class DtVectorNetwork;
14 class DtNetworkEdge;
15 class DtNetworkNode;
16 class DtNetworkElement;
17 class OGRLayer;
18 
19 namespace MAKVRinTerra
20 {
24  : public DtFeature
25  , public boost::enable_shared_from_this<DtGdbVectorFeature>
26  {
27  public:
28 
29  typedef boost::shared_ptr<DtGdbVectorFeature> Ptr;
30 
32  DtGdbVectorFeature(boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr);
33 
35  virtual ~DtGdbVectorFeature();
36 
38  virtual DtFeatureGeometry geometry() const;
39 
41  virtual void setAsPointGeometry(const DtPoint&);
42 
44  virtual void setAsLinearGeometry(const std::vector<DtPoint>&);
45 
47  virtual void setAsArealGeometry(const std::vector<DtPoint>&);
48 
51  virtual void setSpecificationID(DtSpecificationID);
52  DtSpecificationID specificationID() const
53  {
54  return mySpecID;
55  }
56 
58  static Ptr MakePoint(const DtNetworkNode*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
59 
61  static Ptr MakePath(const DtNetworkEdge*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
62 
64  static Ptr MakeArea(const DtNetworkEdge*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
65 
67  static Ptr Make(std::istream&, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
68 
72  virtual boost::optional<Attribute> attribute(const Key & k) const;
73 
74  virtual void forEachAttribute(ForEachFunction f) const;
75 
76  virtual unsigned numberOfAttributes(const Key::String &) const;
77 
79  virtual CPtr getPtr() const;
80 
82  virtual void print(std::ostream&);
83 
85  virtual void convert(DtProj::CPtr transformTo);
86 
87  protected:
88  virtual DtPoint geodeticTransform(const DtPoint&, DtProj::CPtr from, DtProj::CPtr to);
89 
90  protected:
91  boost::shared_ptr<DtFeatureGeometry> myGeometry;
92  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
94  DtSpecificationID mySpecID;
95  };
96 
99  {
100  public:
102  DtGdbFeatureSetCollection(std::string file);
103 
106 
108  virtual ~DtGdbFeatureSetCollection();
109 
110  virtual std::string label() const;
111  virtual void forEachFeature(ForEachFunction, DtWaitType) const;
112  virtual void forEachFeatureParallel(ForEachFunction func, DtWaitType) const;
113  virtual DtFeatureSet* clone() const;
114  virtual bool loaded(double = 0.0) const;
115  virtual unsigned numberOfFeatures() const;
116 
118  virtual void setFeatureType(DtFeatureGeometry::Type);
119 
121  virtual void add(DtGdbVectorFeature::Ptr);
122 
124  virtual void print(std::ostream&);
125 
126  protected:
127  std::vector<DtGdbVectorFeature::Ptr> myFeatures;
128  std::string myFile;
129  };
130 
134  {
135  public:
139  DtGdbVectorNetworkFeatureSet(DtVectorNetwork*, std::string file, const DtProj* transformToProjection = 0);
140 
143 
145  virtual ~DtGdbVectorNetworkFeatureSet();
146 
147  virtual std::string label() const;
148 
150  virtual DtGdbFeatureSetCollection* getOrCreatePointFeatureSet();
151 
153  virtual DtGdbFeatureSetCollection* getOrCreateLinearFeatureSet();
154 
156  virtual DtGdbFeatureSetCollection* getOrCreateArealFeatureSet();
157 
159  virtual void processNodeFeatures(DtVectorNetwork*);
160 
162  virtual void processEdgeFeatures(DtVectorNetwork*);
163 
165  virtual void addLinearFeature(DtNetworkEdge*);
166 
168  virtual void addArealFeature(DtNetworkEdge*);
169 
172  virtual bool isPointFeature(const DtNetworkElement& networkElement);
173 
176  virtual bool isLinearFeature(const DtNetworkElement& networkElement);
177 
180  virtual bool isArealFeature(const DtNetworkElement& networkElement);
181 
183  static DtGdbVectorNetworkFeatureSet* Make(const std::string&);
184 
187  virtual void print(const std::string& file);
188  virtual void print(std::ostream&);
189  virtual void print(std::ostream&, const DtSpecification&);
190  virtual void print(std::ostream&, DtGdbFeatureSetCollection*);
191 
195  virtual bool saveAsShapeFiles(const std::string& directory, std::string& error);
196 
197  protected:
198 
199  typedef std::map<std::string, int> AttributeMap;
200 
206  {
207  std::set<DtSpecificationID> ids;
209  };
210 
211  typedef std::map<int, SpecificationLayer> SpecificationLayers;
212 
215  virtual SpecificationLayers specificationLayers() const;
216 
218  virtual AttributeMap createAttributeMapFromSpecification(const DtSpecification&) const;
219 
221  virtual bool saveShapeFileForLayer(int featureType, const SpecificationLayer&, const std::string& directory, std::string& error) const;
222 
224  virtual std::string fixupNameToLength(const std::string& name, int length) const;
225 
227  virtual bool addAttributesToLayer(const AttributeMap&, OGRLayer*, std::string& error) const;
228 
230  virtual void addFeatureToOgrLayer(const DtFeature&, OGRLayer*, const SpecificationLayer&) const;
231 
232  protected:
236 
238  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
239 
242 
244  typedef std::map<std::string, std::string> OriginalLabelMap;
246  std::string myFile;
247  };
248 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)