[union] same solution as for intersection should be applied for union,

but not in case of uu or similar
This commit is contained in:
Barend Gehrels 2016-03-16 17:54:03 +01:00
parent 7d3d0dd69f
commit 588d102b19
4 changed files with 14 additions and 1 deletions

View File

@ -283,7 +283,7 @@ struct traversal
return false;
}
if (! is_union && ranked_op.visited.finalized())
if (! allow_pass_rank && ranked_op.visited.finalized())
{
// Skip this one, go to next
min_rank = ranked_point.main_rank;

View File

@ -655,6 +655,13 @@ static std::string case_recursive_boxes_36[2] =
"MULTIPOLYGON(((4 2,4 3,5 3,5 2,4 2)),((4 2,4 1,3 1,3 2,4 2)))"
};
static std::string case_recursive_boxes_37[2] =
{
// Requires skipping arc for union too, to avoid duplicate hole
"MULTIPOLYGON(((4 0,5 1,5 0,4 0)),((2 0,3 1,3 0,2 0)),((2 3,2 2,1 2,1 3,2 3)),((2 1,2 2,4 2,3 1,2 1)))",
"MULTIPOLYGON(((2 3,1 2,1 3,2 3)),((3 1,3.5 0.5,4 1,3 1,4 2,4 3,5 3,5 0,3 0,3 1)),((3 1,2 0,2 1,3 1)))"
};
static std::string pie_21_7_21_0_3[2] =
{
"MULTIPOLYGON(((2500 2500,2500 3875,2855 3828,3187 3690,3472 3472,3690 3187,3828 2855,3875 2500,3828 2144,3690 1812,3472 1527,3187 1309,2855 1171,2499 1125,2144 1171,1812 1309,1527 1527,1309 1812,1171 2144,1125 2499,1171 2855,1309 3187,2500 2500)))",

View File

@ -234,6 +234,9 @@ void test_areal()
test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_36",
case_recursive_boxes_36[0], case_recursive_boxes_36[1],
1, 0, 0.5);
test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_37",
case_recursive_boxes_37[0], case_recursive_boxes_37[1],
2, 0, 1.0);
test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_a",
ggl_list_20120915_h2[0], ggl_list_20120915_h2[1],

View File

@ -227,6 +227,9 @@ void test_areal()
test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_36",
case_recursive_boxes_36[0], case_recursive_boxes_36[1],
3, 0, -1, 3.0);
test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_37",
case_recursive_boxes_37[0], case_recursive_boxes_37[1],
2, 1, -1, 7.75);
test_one<Polygon, MultiPolygon, MultiPolygon>("ggl_list_20120915_h2_a",
ggl_list_20120915_h2[0], ggl_list_20120915_h2[1],