Skip to content

v0.2.47..v0.2.48 changeset SuperfluousNodeRemover.cpp

Garret Voltz edited this page Sep 27, 2019 · 1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/ops/SuperfluousNodeRemover.cpp b/hoot-core/src/main/cpp/hoot/core/ops/SuperfluousNodeRemover.cpp
index 78080f1..5d351ea 100644
--- a/hoot-core/src/main/cpp/hoot/core/ops/SuperfluousNodeRemover.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/ops/SuperfluousNodeRemover.cpp
@@ -49,7 +49,8 @@ namespace hoot
 
 HOOT_FACTORY_REGISTER(OsmMapOperation, SuperfluousNodeRemover)
 
-SuperfluousNodeRemover::SuperfluousNodeRemover()
+SuperfluousNodeRemover::SuperfluousNodeRemover() :
+_ignoreInformationTags(false)
 {
 }
 
@@ -63,7 +64,7 @@ void SuperfluousNodeRemover::apply(std::shared_ptr<OsmMap>& map)
   {
     const ConstWayPtr& w = it->second;
     const vector<long>& nodeIds = w->getNodeIds();
-
+    LOG_VART(nodeIds);
     _usedNodes.insert(nodeIds.begin(), nodeIds.end());
   }
 
@@ -71,11 +72,14 @@ void SuperfluousNodeRemover::apply(std::shared_ptr<OsmMap>& map)
   for (NodeMap::const_iterator it = nodes.begin(); it != nodes.end(); ++it)
   {
     const Node* n = it->second.get();
-    if (n->getTags().getNonDebugCount() != 0)
+    LOG_VART(n->getElementId());
+    LOG_VART(n->getTags().getNonDebugCount());
+    if (!_ignoreInformationTags && n->getTags().getNonDebugCount() != 0)
     {
       _usedNodes.insert(n->getId());
     }
   }
+  LOG_VART(_usedNodes.size());
 
   std::shared_ptr<OsmMap> reprojected;
   const NodeMap* nodesWgs84 = &nodes;
@@ -89,16 +93,17 @@ void SuperfluousNodeRemover::apply(std::shared_ptr<OsmMap>& map)
     nodesWgs84 = &reprojected->getNodes();
   }
 
-  for (NodeMap::const_iterator it = nodesWgs84->begin(); it != nodesWgs84->end();
-       ++it)
+  for (NodeMap::const_iterator it = nodesWgs84->begin(); it != nodesWgs84->end(); ++it)
   {
     const Node* n = it->second.get();
-    if (_usedNodes.find(n->getId()) == _usedNodes.end())
+    LOG_VART(n->getElementId());
+    const long nodeId = n->getId();
+    if (_usedNodes.find(nodeId) == _usedNodes.end())
     {
       if (_bounds.isNull() || _bounds.contains(n->getX(), n->getY()))
       {
-        LOG_TRACE("Removing node. " << n->getElementId());
-        RemoveNodeByEid::removeNodeNoCheck(map, n->getId());
+        LOG_TRACE("Removing node: " << n->getElementId() << "...");
+        RemoveNodeByEid::removeNodeNoCheck(map, nodeId);
         _numAffected++;
       }
       else
@@ -122,23 +127,21 @@ void SuperfluousNodeRemover::readObject(QDataStream& is)
   }
 }
 
-std::shared_ptr<OsmMap> SuperfluousNodeRemover::removeNodes(const std::shared_ptr<const OsmMap>& map)
-{
-  std::shared_ptr<OsmMap> result(new OsmMap(map));
-  SuperfluousNodeRemover().apply(result);
-  return result;
-}
-
-void SuperfluousNodeRemover::removeNodes(std::shared_ptr<OsmMap>& map, const Envelope& e)
+void SuperfluousNodeRemover::removeNodes(std::shared_ptr<OsmMap>& map,
+                                         const bool ignoreInformationTags,
+                                         const geos::geom::Envelope& e)
 {
   SuperfluousNodeRemover s;
-  s.setBounds(e);
+  s.setIgnoreInformationTags(ignoreInformationTags);
+  if (!e.isNull())
+  {
+    s.setBounds(e);
+  }
   s.apply(map);
 }
 
 void SuperfluousNodeRemover::setBounds(const Envelope &bounds)
 {
-  LOG_INFO("Setting bounds.");
   _bounds = bounds;
 }
 
Clone this wiki locally