VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gdbVectorNetworkFeatureSet.h
Go to the documentation of this file.
1 
2 
3 
4 
5 #pragma once
6 
7 #include <features/featureSet.h>
9 #include <features/feature.h>
10 #include <features/query.h>
11 #include <gdb/specificationManager.h>
12 #include <iosfwd>
13 #include <set>
14 
15 class DtVectorNetwork;
16 class DtNetworkEdge;
17 class DtNetworkNode;
18 class DtNetworkElement;
19 class OGRLayer;
20 
21 namespace MAKVRinTerra
22 {
26  : public DtFeature
27  , public boost::enable_shared_from_this<DtGdbVectorFeature>
28  {
29  public:
30 
31  typedef boost::shared_ptr<DtGdbVectorFeature> Ptr;
32 
34  DtGdbVectorFeature(boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr);
35 
37  virtual ~DtGdbVectorFeature();
38 
40  virtual DtFeatureGeometry geometry() const;
41 
43  virtual void setAsPointGeometry(const DtPoint&);
44 
46  virtual void setAsLinearGeometry(const std::vector<DtPoint>&);
47 
49  virtual void setAsArealGeometry(const std::vector<DtPoint>&);
50 
53  virtual void setSpecificationID(DtSpecificationID);
54  DtSpecificationID specificationID() const
55  {
56  return mySpecID;
57  }
58 
60  static Ptr MakePoint(const DtNetworkNode*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
61 
63  static Ptr MakePath(const DtNetworkEdge*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
64 
66  static Ptr MakeArea(const DtNetworkEdge*, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
67 
69  static Ptr Make(std::istream&, boost::shared_ptr<DtSpecificationManager> mgr, DtProj::CPtr projection);
70 
74  virtual boost::optional<Attribute> attribute(const Key & k) const;
75 
76  virtual void forEachAttribute(ForEachFunction f) const;
77 
78  virtual unsigned numberOfAttributes(const Key::String &) const;
79 
80  DetachCallback addDeleteCallback(const DeleteCallback&) const
81  {
82  return DetachCallback();
83  }
84 
85  bool isDeleted() const
86  {
87  return false;
88  }
89 
91  virtual void print(std::ostream&);
92 
94  virtual void convert(DtProj::CPtr transformTo);
95 
96  protected:
97  virtual DtPoint geodeticTransform(const DtPoint&, DtProj::CPtr from, DtProj::CPtr to);
98 
99  protected:
100  boost::shared_ptr<DtFeatureGeometry> myGeometry;
101  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
103  DtSpecificationID mySpecID;
104  };
105 
108  {
109  public:
111  DtGdbFeatureSetCollection(std::string file);
112 
115 
117  virtual ~DtGdbFeatureSetCollection();
118 
119  virtual std::string label() const;
120  DtFeatureSet* filter(
121  const DtQuery&, const boost::optional<DtFeatureGeometry>&, DtLoadType) const;
122  virtual void forEachFeatureParallel(const ForEachFunction&) const;
123  virtual DetachCallback forEachFeatureAsync(const ForEachFunction& func) const;
124  virtual DtFeatureSet* clone() const;
125  virtual bool loaded(double = 0.0) const;
126  virtual DetachCallback addLoadedCallback(const LoadedCallback&) const;
127  virtual unsigned numberOfFeatures() const;
128 
130  virtual void setFeatureType(DtFeatureGeometry::Type);
131 
133  virtual void add(DtGdbVectorFeature::Ptr);
134 
136  virtual void print(std::ostream&);
137 
138  protected:
139  std::vector<DtGdbVectorFeature::Ptr> myFeatures;
140  std::string myFile;
141  };
142 
146  {
147  public:
151  DtGdbVectorNetworkFeatureSet(DtVectorNetwork*, std::string file, const DtProj* transformToProjection = 0);
152 
155 
157  virtual ~DtGdbVectorNetworkFeatureSet();
158 
159  virtual std::string label() const;
160 
162  virtual DtGdbFeatureSetCollection* getOrCreatePointFeatureSet();
163 
165  virtual DtGdbFeatureSetCollection* getOrCreateLinearFeatureSet();
166 
168  virtual DtGdbFeatureSetCollection* getOrCreateArealFeatureSet();
169 
171  virtual void processNodeFeatures(DtVectorNetwork*);
172 
174  virtual void processEdgeFeatures(DtVectorNetwork*);
175 
177  virtual void addLinearFeature(DtNetworkEdge*);
178 
180  virtual void addArealFeature(DtNetworkEdge*);
181 
184  virtual bool isPointFeature(const DtNetworkElement& networkElement);
185 
188  virtual bool isLinearFeature(const DtNetworkElement& networkElement);
189 
192  virtual bool isArealFeature(const DtNetworkElement& networkElement);
193 
195  static DtGdbVectorNetworkFeatureSet* Make(const std::string&);
196 
199  virtual void print(const std::string& file);
200  virtual void print(std::ostream&);
201  virtual void print(std::ostream&, const DtSpecification&);
202  virtual void print(std::ostream&, DtGdbFeatureSetCollection*);
203 
207  virtual bool saveAsShapeFiles(const std::string& directory, std::string& error);
208 
209  protected:
210 
211  typedef std::map<std::string, int> AttributeMap;
212 
218  {
219  std::set<DtSpecificationID> ids;
221  };
222 
223  typedef std::map<int, SpecificationLayer> SpecificationLayers;
224 
227  virtual SpecificationLayers specificationLayers() const;
228 
230  virtual AttributeMap createAttributeMapFromSpecification(const DtSpecification&) const;
231 
233  virtual bool saveShapeFileForLayer(int featureType, const SpecificationLayer&, const std::string& directory, std::string& error) const;
234 
236  virtual std::string fixupNameToLength(const std::string& name, int length) const;
237 
239  virtual bool addAttributesToLayer(const AttributeMap&, OGRLayer*, std::string& error) const;
240 
242  virtual void addFeatureToOgrLayer(const DtFeature&, OGRLayer*, const SpecificationLayer&) const;
243 
244  protected:
248 
250  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
251 
254 
256  typedef std::map<std::string, std::string> OriginalLabelMap;
258  std::string myFile;
259  };
260 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)