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;
}
}