Skip to content

v0.2.53..v0.2.54 changeset NonBuildingAreaCriterion.cpp

Garret Voltz edited this page Mar 31, 2020 · 1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/criterion/NonBuildingAreaCriterion.cpp b/hoot-core/src/main/cpp/hoot/core/criterion/NonBuildingAreaCriterion.cpp
index 703fbdc..fabd0a0 100644
--- a/hoot-core/src/main/cpp/hoot/core/criterion/NonBuildingAreaCriterion.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/criterion/NonBuildingAreaCriterion.cpp
@@ -22,7 +22,7 @@
  * This will properly maintain the copyright information. DigitalGlobe
  * copyrights will be updated automatically.
  *
- * @copyright Copyright (C) 2016, 2017, 2018 DigitalGlobe (http://www.digitalglobe.com/)
+ * @copyright Copyright (C) 2016, 2017, 2018, 2020 DigitalGlobe (http://www.digitalglobe.com/)
  */
 #include "NonBuildingAreaCriterion.h"
 
@@ -32,6 +32,8 @@
 #include <hoot/core/criterion/BuildingCriterion.h>
 #include <hoot/core/criterion/AreaCriterion.h>
 
+#include <QElapsedTimer>
+
 namespace hoot
 {
 
@@ -41,9 +43,28 @@ NonBuildingAreaCriterion::NonBuildingAreaCriterion()
 {
 }
 
+NonBuildingAreaCriterion::NonBuildingAreaCriterion(ConstOsmMapPtr map) :
+_map(map)
+{
+}
+
 bool NonBuildingAreaCriterion::isSatisfied(const ConstElementPtr& e) const
 {
-  return AreaCriterion().isSatisfied(e) && !BuildingCriterion().isSatisfied(e);
+  const bool isArea = AreaCriterion(_map).isSatisfied(e);
+  if (!isArea)
+  {
+    return false;
+  }
+
+  const bool isBuilding = BuildingCriterion(_map).isSatisfied(e);
+  if (isBuilding)
+  {
+    return false;
+  }
+
+  LOG_TRACE("is non-building area: " << e);
+
+  return true;
 }
 
 }
Clone this wiki locally