Commit Graph

4091 Commits

Author SHA1 Message Date
Barend Gehrels
4ccd4e43ce [is_valid] add extra info to turn to determine validity
Including unit test adaptions. Results are verified visually with SVG
2017-07-05 13:06:15 +02:00
Barend Gehrels
60c9b096b1 Merge branch 'feature/intvalid' into develop
# Conflicts:
#	include/boost/geometry/algorithms/intersects.hpp
#	include/boost/geometry/algorithms/touches.hpp
2017-06-27 20:33:46 +02:00
Barend Gehrels
58e1c0bc51 [is_valid] remove false negatives from two touching interior rings 2017-06-25 17:18:26 +02:00
Barend Gehrels
c7c4800ca6 [is_valid] remove false negatives from two touching exterior rings, touching
each other at the touching point of an interior ring
2017-06-25 16:59:34 +02:00
Barend Gehrels
7ada36fab2 [overlay] remove debug code, submitted by accident 2017-06-25 14:17:51 +02:00
Barend Gehrels
ee3f5ea20d [union] fix generating of false interiors by checking count_left 2017-06-25 13:56:01 +02:00
Barend Gehrels
4a116eb66e [overlay] fix layout 2017-06-25 13:04:23 +02:00
Barend Gehrels
bfc3785cad [overlay] Dont consider turns already discarded 2017-06-25 12:10:17 +02:00
Barend Gehrels
16213a6b1d [union] Fix handling unions with 3 or more open spaces, where it
needs to check region ids to select the right to continue with
2017-06-25 12:04:49 +02:00
Barend Gehrels
e36f96d13c [overlay] Prepare aggregation to be used for unions too 2017-06-25 11:28:34 +02:00
Barend Gehrels
63ee8f1fea [overlay] Dont discard any self-turns in clusters 2017-06-25 11:27:19 +02:00
Barend Gehrels
6f55525db5 [traverse] remove is_touching as a reference parameter in several
methods, was not used anymore
2017-06-14 12:16:34 +02:00
Barend Gehrels
f832c2d334 [traverse] move reversal to union itself to finetune that later,
and pass open_count
2017-06-14 12:10:17 +02:00
Barend Gehrels
2ac50e8b3d [overlay] split sourcefile, extract patterns 2017-06-14 11:37:24 +02:00
Barend Gehrels
437be1b2b0 [overlay] fix cases with mixed operations (no testcase) 2017-06-14 10:29:15 +02:00
Barend Gehrels
604be619d9 [overlay] fix aggregations, include blocked as from 2017-06-14 10:28:47 +02:00
Barend Gehrels
412fc452da [overlay] Relax case 2, allow both continue and intersection
Fixes new #case_recursive_boxes_53
2017-06-13 20:29:25 +02:00
Barend Gehrels
31b2a89c6d [overlay] remove duplicate condition 2017-06-13 20:18:51 +02:00
Barend Gehrels
2dbc55ed7d [dissolve] fix compilation errors reported by Johan 2017-06-12 20:30:09 +02:00
Barend Gehrels
3cd4f325ec [traverse] fix another similar case #case_137_multi now with two
different outgoing arcs
2017-06-07 22:48:18 +02:00
Barend Gehrels
9993d3697f [traverse] fix cases where touching interior/exterior is approached
from two different directions, and leave in one direction
2017-06-07 22:35:44 +02:00
Barend Gehrels
ef22284629 [traverse] refactor new method to make more options 2017-06-07 22:28:57 +02:00
Barend Gehrels
bf159328e5 [traverse] fix errors in isolation detection in switch detector by
taking clusters into account
2017-06-07 15:20:35 +02:00
Barend Gehrels
db372517b4 [traverse] fix cases where two polygons both have a touching interior ring,
which is equal to itself
2017-06-07 15:06:51 +02:00
Barend Gehrels
95454e4c8e [traverse] redo, isolated MUST be checked. Checking interior/exterior ring is
then redundant again, besides that it does not work for differences.
This breaks case_134 but that must be fixed differently.

After this change, recursive_polygons test is flawless
w.r.t. intersections/unions (validity/with self turns not yet checked)
2017-06-05 17:45:51 +02:00
Barend Gehrels
c04f26bffa [overlay] pending commit, where operations are set to not startable,
they should not be added afterwards so set them like traversed
2017-06-05 16:00:11 +02:00
Barend Gehrels
bd16305a72 [overlay] remove original behaviour to discard turns colocated with blocked turns,
because this stops generating interior rings in certain configurations, and
it is, in the meantime, handled differently in cluster traversal.
Fixes cases like new case #case_recursive_boxes_51
2017-06-05 15:59:29 +02:00
Barend Gehrels
6088389338 [overlay] unset startable for closed turns 2017-06-05 15:26:08 +02:00
Barend Gehrels
e281d5e437 [overay] cleanup clusters properly 2017-06-05 15:25:03 +02:00
Barend Gehrels
0853342320 [traverse] fix #case_58_multi and #case_134_multi by verifying connected
regions in switch detector
2017-06-05 11:51:53 +02:00
Barend Gehrels
ecae306146 [traverse] generalize pattern for colocated interior rings by making
cases with multiple rings (#case_134_multi) possible. It also does
not check for isolated anymore but instead checks interior/exterior rings
and region_ids
2017-06-04 14:04:00 +02:00
Barend Gehrels
254203d06e [traverse] add visited to traversable
There is no unit test case for this change, but the robustness test
(recursive_polygons) gives 5 times less errors with this change
2017-06-04 12:15:23 +02:00
Barend Gehrels
b0cf8ffb59 [traverse] extend handling specific case of cc/ii with another variant,
now also solving #case_recursive_boxes_50
2017-06-04 11:23:42 +02:00
Barend Gehrels
463f778a36 [overlay] fix cases with two parallel interior rings, one touching
the exterior ring, by adding a special case for this. This solves
nearly all robustness (recursive_polygon) now.
2017-06-03 20:09:06 +02:00
Barend Gehrels
c051ab5724 [overlay] instead of for self-turns only, skip all discarded turns
for intersection operations
2017-05-31 11:38:52 +02:00
Barend Gehrels
16be4bbdb2 [overlay] fix new case #case_recursive_boxes_48 for self-intersections
by discarding self ii turns NOT located within another geometry
2017-05-31 11:12:57 +02:00
Barend Gehrels
00ef210f69 [overlay] Remove some redundant includes 2017-05-31 11:00:28 +02:00
Barend Gehrels
952a4e8a9c [overlay] extract discarding self-turns to separate headerfile 2017-05-31 10:59:52 +02:00
Barend Gehrels
acd364586f [overlay] handle todo-item, extract self_turn 2017-05-29 20:57:35 +02:00
Glen Fernandes
0ed359a624 Use pointer_traits.to_address instead of addressof(*p)
addressof(*p) before construct() is not well-defined, since p
does not alias storage that has an object constructed in it.
2017-05-29 14:01:51 -04:00
Barend Gehrels
d3481fccca [overlay] fix within-check for buffer by making it a specialization
instead of a if-condition
2017-05-28 17:28:51 +02:00
Barend Gehrels
c53cbe56f5 [overlay] fix cases with self-turns where interior rings are generated
within another geometry, for union
2017-05-26 22:21:10 +02:00
Barend Gehrels
7d8a46d888 [overlay] remove redundant parameter 2017-05-26 15:26:18 +02:00
Barend Gehrels
0bc28aadb8 [self_turns] fix direction - for this, an extra template parameter is required
(it cannot (yet) be derived from the geometry, because it causes is_valid
to fail)
2017-05-25 13:52:13 +02:00
Barend Gehrels
7d86bfdbf5 [overlay] simplify conditions to discard turns in enrich 2017-05-25 12:03:03 +02:00
Barend Gehrels
99c580a7b1 [overlay] For self-turns, remove exception for difference and,
like union, for intersection only keep ii self-turns
2017-05-25 11:45:46 +02:00
Adam Wulkiewicz
1a605740cc Merge pull request #397 from awulkiew/feature/relops_multi_point
Add missing relational operations for MultiPoint/Geometry
2017-05-23 13:24:19 +02:00
Adam Wulkiewicz
f6c28cebb7 Merge pull request #398 from vissarion/feature/disjoint_fix
Feature/disjoint fix
2017-05-23 13:23:58 +02:00
Barend Gehrels
52c2fde84a [self_turns] fix behaviour (correct assignment of segment_identifiers) for ccw geometries 2017-05-21 14:41:46 +02:00
Barend Gehrels
713679f0d0 [overlay] add comment 2017-05-20 17:30:52 +02:00