Skip to content

v0.2.54..v0.2.55 changeset OsmMap.cpp

Garret Voltz edited this page Aug 14, 2020 · 1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/elements/OsmMap.cpp b/hoot-core/src/main/cpp/hoot/core/elements/OsmMap.cpp
index 266994f..6a5df37 100644
--- a/hoot-core/src/main/cpp/hoot/core/elements/OsmMap.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/elements/OsmMap.cpp
@@ -74,18 +74,21 @@ _idSwap(new IdSwap())
   _index.reset(new OsmMapIndex(*this));
   _srs = _wgs84;
   _initCounters();
+  _enableProgressLogging = true;
 }
 
 OsmMap::OsmMap(const ConstOsmMapPtr& map)
 {
   _copy(map);
   _initCounters();
+  _enableProgressLogging = true;
 }
 
 OsmMap::OsmMap(const OsmMapPtr& map)
 {
   _copy(map);
   _initCounters();
+  _enableProgressLogging = true;
 }
 
 OsmMap::OsmMap(const std::shared_ptr<OGRSpatialReference>& srs) :
@@ -95,6 +98,7 @@ _idSwap(new IdSwap())
   _index.reset(new OsmMapIndex(*this));
   _srs = srs;
   _initCounters();
+  _enableProgressLogging = true;
 }
 
 OsmMap::OsmMap(const ConstOsmMapPtr& map, const std::shared_ptr<OGRSpatialReference>& srs)
@@ -102,6 +106,7 @@ OsmMap::OsmMap(const ConstOsmMapPtr& map, const std::shared_ptr<OGRSpatialRefere
   _copy(map);
   _srs = srs;
   _initCounters();
+  _enableProgressLogging = true;
 }
 
 OsmMap::~OsmMap()
@@ -747,7 +752,7 @@ void OsmMap::visitNodesRo(ConstElementVisitor& visitor) const
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -776,7 +781,7 @@ void OsmMap::visitWaysRo(ConstElementVisitor& visitor) const
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -805,7 +810,7 @@ void OsmMap::visitRelationsRo(ConstElementVisitor& visitor) const
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -834,7 +839,7 @@ void OsmMap::visitRw(ConstElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -853,7 +858,7 @@ void OsmMap::visitRw(ConstElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -872,7 +877,7 @@ void OsmMap::visitRw(ConstElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -901,7 +906,7 @@ void OsmMap::visitRw(ElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -920,7 +925,7 @@ void OsmMap::visitRw(ElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -939,7 +944,7 @@ void OsmMap::visitRw(ElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -968,7 +973,7 @@ void OsmMap::visitWaysRw(ConstElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -997,7 +1002,7 @@ void OsmMap::visitWaysRw(ElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -1026,7 +1031,7 @@ void OsmMap::visitRelationsRw(ConstElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -1055,7 +1060,7 @@ void OsmMap::visitRelationsRw(ElementVisitor& visitor)
     }
 
     numVisited++;
-    if (numVisited % (taskStatusUpdateInterval * 10) == 0)
+    if (_enableProgressLogging && numVisited % (taskStatusUpdateInterval * 10) == 0)
     {
       PROGRESS_INFO(
         "\tProcessed " << StringUtils::formatLargeNumber(numVisited) << " / " <<
@@ -1148,6 +1153,15 @@ void OsmMap::replaceSource(const QString &url)
   appendSource(url);
 }
 
+QSet<ElementId> OsmMap::getElementIds() const
+{
+  QSet<ElementId> ids;
+  ids = ids.unite(getNodeElementIds());
+  ids = ids.unite(getWayElementIds());
+  ids = ids.unite(getRelationElementIds());
+  return ids;
+}
+
 QSet<long> OsmMap::getNodeIds() const
 {
   QSet<long> ids;
@@ -1158,6 +1172,16 @@ QSet<long> OsmMap::getNodeIds() const
   return ids;
 }
 
+QSet<ElementId> OsmMap::getNodeElementIds() const
+{
+  QSet<ElementId> ids;
+  for (NodeMap::const_iterator it = _nodes.begin(); it != _nodes.end(); ++it)
+  {
+    ids.insert(ElementId(ElementType::Node, it->first));
+  }
+  return ids;
+}
+
 QSet<long> OsmMap::getWayIds() const
 {
   QSet<long> ids;
@@ -1168,6 +1192,16 @@ QSet<long> OsmMap::getWayIds() const
   return ids;
 }
 
+QSet<ElementId> OsmMap::getWayElementIds() const
+{
+  QSet<ElementId> ids;
+  for (WayMap::const_iterator it = _ways.begin(); it != _ways.end(); ++it)
+  {
+    ids.insert(ElementId(ElementType::Way, it->first));
+  }
+  return ids;
+}
+
 QSet<long> OsmMap::getRelationIds() const
 {
   QSet<long> ids;
@@ -1178,6 +1212,16 @@ QSet<long> OsmMap::getRelationIds() const
   return ids;
 }
 
+QSet<ElementId> OsmMap::getRelationElementIds() const
+{
+  QSet<ElementId> ids;
+  for (RelationMap::const_iterator it = _relations.begin(); it != _relations.end(); ++it)
+  {
+    ids.insert(ElementId(ElementType::Relation, it->first));
+  }
+  return ids;
+}
+
 void OsmMap::resetIterator()
 {
   _currentNodeItr = getNodes().begin();
Clone this wiki locally