VR-Forces 4.1.1 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, std::string layerName);
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, std::string layerName);
59 
61  static Ptr MakePath(const DtNetworkEdge*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection, std::string layerName);
62 
64  static Ptr MakeArea(const DtNetworkEdge*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection, std::string layerName);
65 
67  static Ptr Make(std::istream&, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection, std::string layerName);
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  static const char* LayerAttribute;
88 
89  protected:
90  virtual DtPoint geodeticTransform(const DtPoint&, DtProj::CPtr from, DtProj::CPtr to);
91 
92  protected:
93  boost::shared_ptr<DtFeatureGeometry> myGeometry;
94  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
97  std::string myLayerName;
98  };
99 
102  {
103  public:
105  DtGdbFeatureSetCollection(std::string layerName);
106 
109 
111  virtual ~DtGdbFeatureSetCollection();
112 
113  virtual void forEachFeature(ForEachFunction, DtWaitType) const;
114  virtual void forEachFeatureParallel(ForEachFunction func, DtWaitType) const;
115  virtual DtFeatureSet* clone() const;
116  virtual bool loaded(double = 0.0) const;
117  virtual unsigned numberOfFeatures() const;
118 
119  virtual DtQuery schema() const;
120 
122  virtual void setFeatureType(DtFeatureGeometry::Type);
123 
125  virtual void add(DtGdbVectorFeature::Ptr);
126 
128  virtual void print(std::ostream&);
129 
130  protected:
131  std::vector<DtGdbVectorFeature::Ptr> myFeatures;
133  };
134 
138  {
139  public:
143  DtGdbVectorNetworkFeatureSet(DtVectorNetwork*, std::string layerName, const DtProj* transformToProjection = 0);
144 
147 
149  virtual ~DtGdbVectorNetworkFeatureSet();
150 
152  virtual DtGdbFeatureSetCollection* getOrCreatePointFeatureSet();
153 
155  virtual DtGdbFeatureSetCollection* getOrCreateLinearFeatureSet();
156 
158  virtual DtGdbFeatureSetCollection* getOrCreateArealFeatureSet();
159 
161  virtual void processNodeFeatures(DtVectorNetwork*);
162 
164  virtual void processEdgeFeatures(DtVectorNetwork*);
165 
167  virtual void addLinearFeature(DtNetworkEdge*);
168 
170  virtual void addArealFeature(DtNetworkEdge*);
171 
174  virtual bool isPointFeature(const DtNetworkElement& networkElement);
175 
178  virtual bool isLinearFeature(const DtNetworkElement& networkElement);
179 
182  virtual bool isArealFeature(const DtNetworkElement& networkElement);
183 
185  static DtGdbVectorNetworkFeatureSet* Make(const std::string&);
186 
189  virtual void print(const std::string& file);
190  virtual void print(std::ostream&);
191  virtual void print(std::ostream&, const DtSpecification&);
192  virtual void print(std::ostream&, DtGdbFeatureSetCollection*);
193 
197  virtual bool saveAsShapeFiles(const std::string& directory, std::string& error);
198 
199  protected:
200 
201  typedef std::map<std::string, int> AttributeMap;
202 
208  {
209  std::set<DtSpecificationID> ids;
211  };
212 
213  typedef std::map<int, SpecificationLayer> SpecificationLayers;
214 
217  virtual SpecificationLayers specificationLayers() const;
218 
220  virtual AttributeMap createAttributeMapFromSpecification(const DtSpecification&) const;
221 
223  virtual bool saveShapeFileForLayer(int featureType, const SpecificationLayer&, const std::string& directory, std::string& error) const;
224 
226  virtual std::string fixupNameToLength(const std::string& name, int length) const;
227 
229  virtual bool addAttributesToLayer(const AttributeMap&, OGRLayer*, std::string& error) const;
230 
232  virtual void addFeatureToOgrLayer(const DtFeature&, OGRLayer*, const SpecificationLayer&) const;
233 
234  protected:
238 
240  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
241 
244 
246  typedef std::map<std::string, std::string> OriginalLabelMap;
248  std::string myLayerName;
249  };
250 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)