Commit Graph

3645 Commits

Author SHA1 Message Date
Adam Wulkiewicz
fbf5bcd3f3 [policies] Cleanup includes (type_traits). 2016-03-16 01:18:40 +01:00
Adam Wulkiewicz
6208fd9556 [core] Cleanup includes (type_traits, mpl). 2016-03-16 01:18:00 +01:00
Adam Wulkiewicz
ad916f108d [strategies] Cleanup includes (type_traits, mpl). 2016-03-16 01:17:02 +01:00
Adam Wulkiewicz
b791e1eede [algorithms] Cleanup includes (type_traits, range). 2016-03-16 01:16:16 +01:00
Adam Wulkiewicz
e79b50c60d [util] Cleanup includes (type_traits, range). 2016-03-16 01:15:21 +01:00
Adam Wulkiewicz
3ba3a76263 Merge pull request #345 from awulkiew/feature/xxx_in_box
Point/Box and Box/Box spatial relations in non-cartesian coordinate systems.
2016-03-09 17:50:28 +01:00
Adam Wulkiewicz
016dc66a68 [strategies] Refactor non-cartesian box_in_box and point_in_box (guidelines, avoiding duplication). 2016-03-09 17:07:08 +01:00
Adam Wulkiewicz
fa300f4089 [disjoint] Refactor non-cartesian box_box implementation (guidelines, avoiding duplication). 2016-03-09 17:06:25 +01:00
Adam Wulkiewicz
65cc553e31 [util] Add math::longitude_distance_signed and math::longitude_distance_unsigned functions. 2016-03-09 17:05:22 +01:00
Barend Gehrels
5383c24b34 [traverse][cluster] fix cases where it selected wrong arc at cluster,
a pseudo interior ring
2016-03-09 11:51:12 +01:00
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