VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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>
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;
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  virtual bool elided() const;
129  virtual bool empty() const;
130 
132  virtual void setFeatureType(DtFeatureGeometry::Type);
133 
135  virtual void add(DtGdbVectorFeature::Ptr);
136 
138  virtual void print(std::ostream&);
139 
140  protected:
141  std::vector<DtGdbVectorFeature::Ptr> myFeatures;
142  std::string myFile;
143  };
144 
148  {
149  public:
153  DtGdbVectorNetworkFeatureSet(DtVectorNetwork*, std::string file, const DtProj* transformToProjection = 0);
154 
157 
159  virtual ~DtGdbVectorNetworkFeatureSet();
160 
161  virtual std::string label() const;
162 
164  virtual DtGdbFeatureSetCollection* getOrCreatePointFeatureSet();
165 
167  virtual DtGdbFeatureSetCollection* getOrCreateLinearFeatureSet();
168 
170  virtual DtGdbFeatureSetCollection* getOrCreateArealFeatureSet();
171 
173  virtual void processNodeFeatures(DtVectorNetwork*);
174 
176  virtual void processEdgeFeatures(DtVectorNetwork*);
177 
179  virtual void addLinearFeature(DtNetworkEdge*);
180 
182  virtual void addArealFeature(DtNetworkEdge*);
183 
186  virtual bool isPointFeature(const DtNetworkElement& networkElement);
187 
190  virtual bool isLinearFeature(const DtNetworkElement& networkElement);
191 
194  virtual bool isArealFeature(const DtNetworkElement& networkElement);
195 
197  static DtGdbVectorNetworkFeatureSet* Make(const std::string&);
198 
201  virtual void print(const std::string& file);
202  virtual void print(std::ostream&);
203  virtual void print(std::ostream&, const DtSpecification&);
204  virtual void print(std::ostream&, DtGdbFeatureSetCollection*);
205 
209  virtual bool saveAsShapeFiles(const std::string& directory, std::string& error);
210 
211  protected:
212 
213  typedef std::map<std::string, int> AttributeMap;
214 
220  {
221  std::set<DtSpecificationID> ids;
223  };
224 
225  typedef std::map<int, SpecificationLayer> SpecificationLayers;
226 
229  virtual SpecificationLayers specificationLayers() const;
230 
232  virtual AttributeMap createAttributeMapFromSpecification(const DtSpecification&) const;
233 
235  virtual bool saveShapeFileForLayer(int featureType, const SpecificationLayer&, const std::string& directory, std::string& error) const;
236 
238  virtual std::string fixupNameToLength(const std::string& name, int length) const;
239 
241  virtual bool addAttributesToLayer(const AttributeMap&, OGRLayer*, std::string& error) const;
242 
244  virtual void addFeatureToOgrLayer(const DtFeature&, OGRLayer*, const SpecificationLayer&) const;
245 
246  protected:
250 
252  boost::shared_ptr<DtSpecificationManager> mySpecificationManager;
253 
256 
258  typedef std::map<std::string, std::string> OriginalLabelMap;
260  std::string myFile;
261  };
262 }

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)