Commit Graph

3635 Commits

Author SHA1 Message Date
Adam Wulkiewicz
4444357697 [disjoint] Support non-cartesian CSes for Pt/Box and Box/Box.
For Point/Box use part of the implementation of point_in_box covered_by
strategy.
2016-03-09 04:25:02 +01:00
Adam Wulkiewicz
8f14bf15c0 [strategies] In point_in_box support non-cartesian CSes and make this strategy it default.
The reason is that width of a Box may be greater than 180 deg. Side
strategy won't give the correct result in that case. For edges greater
than 180 deg the result of a side calculation is the opposite to expected.
2016-03-09 04:21:39 +01:00
Adam Wulkiewicz
97fae7d1dd [strategies] Remove unneeded default_strtegy specializations for box_in_box strategy. 2016-03-09 04:20:10 +01:00
Adam Wulkiewicz
62eaf3a24d [strategies] In ssf strategy check result WRT epsilon. 2016-03-08 14:46:20 +01:00
Adam Wulkiewicz
d04acacc74 [strategies] Support non-cartesian CSes in box_in_box strategy. 2016-03-08 04:38:48 +01:00
Adam Wulkiewicz
183d32f2e3 [strategies] In winding strategy use normalize_longitude() to avoid using dummy argument to normalize_spheroidal_coordinates(). 2016-03-08 04:32:49 +01:00
Adam Wulkiewicz
49e90b204b [util] Add normalize_longitude() function. 2016-03-08 04:31:20 +01:00
Adam Wulkiewicz
b5250287f6 [relate] Update copyright info. 2016-03-07 03:28:52 +01:00
Adam Wulkiewicz
a9ea6dcd48 [relate] Remove unused/broken ctors of result handlers. 2016-03-07 03:23:28 +01:00
Adam Wulkiewicz
175496f4f5 Merge pull request #343 from awulkiew/fix/winding
Fix winding strategy for spherical and geographic system.
2016-03-06 22:45:47 +01:00
Adam Wulkiewicz
463a085698 Merge pull request #341 from awulkiew/fix/rescale_policy
Enable rescale policy only in cartesian coordinate system.
2016-03-06 22:41:39 +01:00
Adam Wulkiewicz
a0f3058910 [winding][within] Fix winding strategy for some special cases near poles. 2016-03-03 15:43:59 +01:00
Adam Wulkiewicz
a64e23b64d [within][winding] Support special cases (poles).
Segments traversing poles, segment endpoints on poles, point on pole.
2016-03-03 04:18:30 +01:00
Adam Wulkiewicz
9617f99513 [buffer] Adjust the buffer WRT recent changes in winding strategy.
In order to check if a point is inside rings buffer instead of calling
within() has optimization manually checking the sides of monotonous
sections in some cases. Since now the winding strategy scans X-dimension
the dimension used in optimization must also be X.
2016-03-03 01:21:03 +01:00
Adam Wulkiewicz
7e26469fb1 [strategies][within] Fix winding strategy for non-cartesian CS.
E.g. in spherical CS if a point has the same latitude as both points of
a segment it doesn't mean that it lies on the segment. This change fixes
this edge case by scanning 0-dimension instead of 1-dimension. In
spherical and geographic it's guaranteed that if longitude is the same a
point lies on a segment. Segments going through poles are not yet
supported.
2016-03-03 01:15:33 +01:00
Adam Wulkiewicz
69e32e2b20 [overlay] Remove unused typedef. 2016-03-02 15:28:12 +01:00
Barend Gehrels
6b0af591af [colocations] remove debug info which was committed unintentional 2016-03-02 13:10:11 +01:00
Barend Gehrels
a5f5fa6425 [traverse] dont check for self intersections anymore 2016-03-02 13:09:50 +01:00
Barend Gehrels
dfda1ccbc3 [buffer] fix last cases, in cases where the same offsetted ring is self-intersecting,
the approach using multi_index does not work. We need an extra idenfication
to check the 'sources' of the turns in clusters. Added piece_index for
this purpose.
This can be templated later (so only used for buffer)
2016-03-02 13:09:25 +01:00
Barend Gehrels
438ee64956 [buffer][traverse] fix condition and added image to explain 2016-03-02 10:36:19 +01:00
Barend Gehrels
91223c5c98 Merge branch 'feature/cluster' into develop 2016-03-01 21:40:45 +01:00
Barend Gehrels
3f9505e3e6 [colocations] apply counts only to the "to" cases
(I used this already longer time but it was not yet committed)
2016-02-28 09:19:52 +01:00
Barend Gehrels
d4620e56b3 [traverse] fix case which was traversing twice;
this fixes all testcases for difference
2016-02-27 18:20:34 +01:00
Barend Gehrels
577c3bcfe4 [traverse] use same method for finding index; this fixes
the last uu case in union_multi (and is better anyways)
2016-02-27 18:16:19 +01:00
Barend Gehrels
83320f528e [traverse] move loop to separate method to be shared later 2016-02-27 18:08:18 +01:00
Barend Gehrels
0bd3944652 [traverse] don't travel again over visited arcs in clusters. This fixes
(again, after breaking) all cases for difference/intersection and no new
errors for union/buffer
2016-02-26 18:50:34 +01:00
Barend Gehrels
d0f584e6f3 [traverse] fix cases where there is a choice between two equally suited
arcs from a cluster - if one is the starting point, take that one
2016-02-17 14:26:56 +01:00
Barend Gehrels
05c789e77e [buffer][traverse] fix uu for buffer 2016-02-17 12:38:34 +01:00
Barend Gehrels
e30fd1ca4c [traverse] fix case for buffer having only cc (in the whole cluster).
For a cc operation, main_rank 0 is OK
2016-02-17 11:43:01 +01:00
Barend Gehrels
c4c180bb7d [union] instead of checking uu, count open spaces to support also
conbined touching turns without a uu
2016-02-10 20:34:37 +01:00
Barend Gehrels
41518b6ac3 [traverse] use count_left/count_right to get first requested turn
in clusters
2016-02-10 13:23:09 +01:00
Adam Wulkiewicz
80d2bb09ca [io] Add support for all geometries to svg() and use it in svg_mapper. 2016-02-09 14:04:07 +01:00
Adam Wulkiewicz
dc3c5416f4 [io] Fix compilation error in write_svg for box and non-int coordinate type. 2016-02-09 01:39:10 +01:00
Adam Wulkiewicz
556bed04a5 [policies] Enable rescaling only for cartesian CS. 2016-02-04 16:32:45 +01:00
Barend Gehrels
1ea05c3539 [traverse] fix subject/origin, which did not work for buffer
Now the previous point is taken (this might in theory be colocated!)
2016-02-03 14:03:10 +01:00
Barend Gehrels
5a35924616 [traverse] use index instead of source_index to determine subject
(in relation with previous commit: use indexes instead of iterators, part 2)
2016-02-03 12:33:35 +01:00
Barend Gehrels
24908b7636 [traverse] go to index instead of iterator (part 1) 2016-02-03 12:10:54 +01:00
Barend Gehrels
34db67d51d Merge branch 'develop' into feature/cluster 2016-02-03 11:12:33 +01:00
Adam Wulkiewicz
c018acfb4a [strategies] Improve the accuracy of surveyor area strategy by using slightly different formula. 2016-01-28 14:46:54 +01:00
Barend Gehrels
e619ec6dfe [overlay][buffer] make find_open generic for usage in both overlay
and buffer
2016-01-27 13:35:17 +01:00
Barend Gehrels
19747bea88 [buffer] use specific visiting policy for buffer 2016-01-27 13:33:57 +01:00
Barend Gehrels
18a893d2c0 [buffer][test] adaptions to make clusters visible in buffer SVG maps 2016-01-27 11:44:48 +01:00
Barend Gehrels
dc6b102b1f [buffer] add three specializations necessary to include
buffered ring collections in SVG maps
2016-01-27 11:43:46 +01:00
Adam Wulkiewicz
5764489256 [formulas] Add a workaround for GCC bug (causing error: parse error in template argument list) in andoyer_inverse. 2016-01-25 21:11:55 +01:00
Adam Wulkiewicz
68fa4e5f0c [adapted] Suppress unused parameter warning in Boost.Polygon adaptation. 2016-01-25 20:04:54 +01:00
Adam Wulkiewicz
e482a86b74 Merge pull request #340 from awulkiew/fix/back_inserter
Add range::back_inserter() and use it in algorithms when needed.
2016-01-25 19:46:08 +01:00
Adam Wulkiewicz
33982c9ae6 Merge pull request #339 from awulkiew/fix/andoyer
Fix andoyer
2016-01-25 19:39:57 +01:00
Adam Wulkiewicz
53d7dca308 [strategies] Use andoyer_inverse formula in andoyer distance strategy. 2016-01-25 19:34:20 +01:00
Adam Wulkiewicz
edc3c7851d [algorithms] Use range::back_inserter() if points are added to geometries. 2016-01-23 13:57:49 +01:00
Adam Wulkiewicz
972b667525 [range] Add back_insert_iterator using traits and back_inserter(). 2016-01-23 13:47:24 +01:00