v0.2.53..v0.2.54 changeset BufferedOverlapExtractor.cpp
Garret Voltz edited this page Mar 31, 2020
·
1 revision
diff --git a/hoot-core/src/main/cpp/hoot/core/algorithms/extractors/BufferedOverlapExtractor.cpp b/hoot-core/src/main/cpp/hoot/core/algorithms/extractors/BufferedOverlapExtractor.cpp
index f9874d4..8021d3d 100644
--- a/hoot-core/src/main/cpp/hoot/core/algorithms/extractors/BufferedOverlapExtractor.cpp
+++ b/hoot-core/src/main/cpp/hoot/core/algorithms/extractors/BufferedOverlapExtractor.cpp
@@ -23,7 +23,7 @@
* copyrights will be updated automatically.
*
* @copyright Copyright (C) 2005 VividSolutions (http://www.vividsolutions.com/)
- * @copyright Copyright (C) 2015, 2017, 2018, 2019 DigitalGlobe (http://www.digitalglobe.com/)
+ * @copyright Copyright (C) 2015, 2017, 2018, 2019, 2020 DigitalGlobe (http://www.digitalglobe.com/)
*/
#include "BufferedOverlapExtractor.h"
@@ -65,9 +65,12 @@ double BufferedOverlapExtractor::extract(const OsmMap& map, const ConstElementPt
{
ElementConverter ec(map.shared_from_this());
std::shared_ptr<Geometry> g1 = ec.convertToGeometry(target);
+ if (g1->isEmpty())
+ {
+ return nullValue();
+ }
std::shared_ptr<Geometry> g2 = ec.convertToGeometry(candidate);
-
- if (g1->isEmpty() || g2->isEmpty())
+ if (g2->isEmpty())
{
return nullValue();
}
@@ -91,6 +94,8 @@ double BufferedOverlapExtractor::extract(const OsmMap& map, const ConstElementPt
std::shared_ptr<Geometry> overlap;
try
{
+ // This buffer calc is a performance bottleneck for Area Conflation. Attempts to reduce the quad
+ // segments option passed to the buffer operation have had no effect on performance so far.
g1.reset(g1->buffer(buffer));
g2.reset(g2->buffer(buffer));
overlap.reset(g1->intersection(g2.get()));