Commit Graph

5259 Commits

Author SHA1 Message Date
Vissarion Fysikopoulos
3d9cbd87a4 [strategies] Move generic distance pt/box and box/box strategies 2018-01-22 16:48:37 +02:00
Vissarion Fysikopoulos
edf07697e8 Merge remote-tracking branch 'origin/develop' into feature/distance_box 2018-01-22 12:59:25 +02:00
Adam Wulkiewicz
e67bf40b35 Merge branch 'develop' into feature/area_strategies 2018-01-21 02:48:29 +01:00
Adam Wulkiewicz
7d2026dd84 Merge branch 'develop' into feature/projections
Conflicts:
	include/boost/geometry/geometry.hpp
	test/Jamfile.v2
2018-01-21 01:51:04 +01:00
Adam Wulkiewicz
84675e253f [projections] Remove unused paramters and types. 2018-01-21 00:06:35 +01:00
Vissarion Fysikopoulos
57b9cd0bbc [algorithms] [tests] Fix distance segment-box for spehrical and geographic when segments is close to a box corner 2018-01-19 19:12:49 +02:00
Vissarion Fysikopoulos
a51b2dd6ac [algorithm] [test] Meridian case for segment box distance; segments left-right of box 2018-01-18 12:40:09 +02:00
Adam Wulkiewicz
20a83095a0 [doc][area] Add documentation for geographic strategy and improve example (use strategies). 2018-01-16 15:22:52 +01:00
Adam Wulkiewicz
6d0d53c41e Merge branch 'develop' into feature/area_strategies 2018-01-16 14:45:48 +01:00
Adam Wulkiewicz
5f19586ef6 [doc][densify] Add examples. 2018-01-15 19:46:55 +01:00
Adam Wulkiewicz
e8fdc21b85 Merge branch 'develop' into feature/complexify 2018-01-15 19:24:08 +01:00
Adam Wulkiewicz
1cafdc6d43 [densify] Fix default strategy type and remove wrong template parameter. 2018-01-15 19:23:43 +01:00
Adam Wulkiewicz
36d5ad9122 [length] Implement resolve_strategy stage. 2018-01-15 19:20:18 +01:00
Barend Gehrels
e01ba5d62a [dissolve] comment case in recently changed code 2018-01-12 18:09:04 +01:00
Barend Gehrels
3984a1f3d9 [buffer] add method added to visitor for dissolve 2018-01-12 17:34:32 +01:00
Barend Gehrels
4641bacc87 [dissolve/traversal] examine shortcuts over more turns to fix the last reported
cases
2018-01-12 17:29:18 +01:00
Barend Gehrels
4902e1ef25 [dissolve] remove unused headers, return void 2018-01-12 16:28:54 +01:00
Barend Gehrels
9f16a17145 [dissolve] add generated rings to output to be able to judge intermediate
results better
2018-01-12 15:29:54 +01:00
Barend Gehrels
9543438736 [dissolve] use deque i/o vector like done in overlay 2018-01-12 14:54:23 +01:00
Barend Gehrels
65060df2e5 [dissolve] remove redundant ring_type as planned, and rename out_vector
to ring_container_type, as done in overlay
2018-01-12 14:51:46 +01:00
Barend Gehrels
841641c99e [dissolve] fix case where travel information was not correct. 2018-01-12 14:45:39 +01:00
Barend Gehrels
c828dcf34b [dissolve] handle interior rings as planne. This fixes some of the remaining
issues.
2018-01-12 13:56:50 +01:00
Barend Gehrels
74741357e2 [dissolve] handle rings separately (phase 1) and iterate it in reverse
if the orientation is not correct. Exterior rings only for now, to be
continued.
This fixes all order problems and makes implementation agnostic from
orientation of input. This is reflected in the updated unit test.
2018-01-12 12:27:15 +01:00
Barend Gehrels
29e5c01017 [dissolve] split ring/polygon implementation, to be followed up 2018-01-12 11:45:37 +01:00
Barend Gehrels
2b59d7c867 [dissolve] introduce Reverse to be able to (later) apply dissolve in two directions,
not only to support cw/ccw, but more to only use one version (positive area)
instead of processing cw input which is effectively ccw.
2018-01-12 11:18:25 +01:00
Barend Gehrels
5dbe743624 [dissolve] remove method now unused 2018-01-12 10:31:59 +01:00
Barend Gehrels
5cf534bd53 [dissolve] fix the reported star cases if they would go in other direction.
In case a turn travels to itself and it is not the start turn, the other
option should be taken (even if one of them is preferred)
2018-01-12 10:11:04 +01:00
Adam Wulkiewicz
f35a4f927e [doc][densify] Add documentation for densify algorithm and strategies.
Change strategies from structs to classes as this is the requirement of
the docs generating tool.
2018-01-12 03:01:01 +01:00
Adam Wulkiewicz
e99370beaa [geometry] Include densify algorithm and strategies in top-most headers. 2018-01-11 18:31:42 +01:00
Vissarion Fysikopoulos
0fb5cabe67 [algorithms] Fix box/segment distance for segment bottom of box 2018-01-11 13:01:00 +02:00
Adam Wulkiewicz
3daa5956f9 [densify][strategies] Throw on invalid max_distance (in algorithm), assert max_distance > 0 (in strategies). 2018-01-10 23:31:53 +01:00
Adam Wulkiewicz
3dd6413478 [strategies][densify] Support arbitrary dimension in cartesian densify strategy. 2018-01-10 23:23:33 +01:00
Adam Wulkiewicz
63562cc81b [densify] Refactor densify_range, implement using iterators. Now it requires FwdRng. 2018-01-10 23:03:52 +01:00
Vissarion Fisikopoulos
3ff1887b85
Merge branch 'develop' into feature/distance_box 2018-01-10 15:34:33 +02:00
Barend Gehrels
27b15722ca [overlay] flag const conditions 2018-01-10 10:46:17 +01:00
Barend Gehrels
71f4706ebf [overlay] remove warning about shadow it 2018-01-10 10:29:31 +01:00
Adam Wulkiewicz
27c82ca4c6 [densify][strategies] Take AssignPolicy instead of RangeOut in strategies.
This allows moving range handling, e.g. push_back() calls from strategies
to algorithm.
2018-01-09 12:35:31 +01:00
Adam Wulkiewicz
b3a4beb712 [index][rtree] By default use boost::container::new_allocator in order to support move semantics in C++03 after supporting boost::container::allocator_traits. 2018-01-05 19:42:35 +01:00
Adam Wulkiewicz
1756bdcb74 [index] Rename struct to avoid 'member function changing meaning' error. 2018-01-05 02:56:59 +01:00
Adam Wulkiewicz
0608f7e383 Merge branch 'develop' of github.com:boostorg/geometry into develop 2018-01-05 00:10:30 +01:00
Adam Wulkiewicz
cedbf5e070 [index] Refactor nodes and allocators code.
Fix GCC compilation error (convert allocator type before passing into
boost::container::vector ctor).
Use boost::container::allocator_traits in weak_static nodes
implementation.
2018-01-05 00:06:39 +01:00
Barend Gehrels
04b0b89207 Merge branch 'develop' into feature/dissolve
# Conflicts:
#	include/boost/geometry/algorithms/detail/overlay/is_self_turn.hpp
2018-01-04 22:09:40 +01:00
Barend Gehrels
6b637c91c0 Merge branch 'feature/intvalid' into develop 2018-01-04 21:42:43 +01:00
Adam Wulkiewicz
be9d98faea
Merge pull request #444 from DanielaE/fix/retire-iterator.hpp
Get rid of iterator.hpp
2018-01-04 12:46:58 +01:00
Adam Wulkiewicz
355aeb4215
Merge pull request #445 from DanielaE/fix/replace-deprecated-allocator-members
Most members of std::allocate are deprecated in C++17
2018-01-04 12:44:51 +01:00
Barend Gehrels
01bbb65883 [dissolve] resolve internal overlaps by calling the code also used for
multipolygons.
TODO: this should be done for interior rings separately too
2018-01-03 18:12:31 +01:00
Barend Gehrels
5c1a9fd3c6 [enrich/dissolve] set startable false for operations between two other
turns on the same segment, and discard turns which do not have startable
operations
2018-01-03 17:49:11 +01:00
Barend Gehrels
83f3920ab9 [dissolve] using preferred operations, they are now also used to determine
the order in which turns are traversed (first preferred).
This introduces a specific traverse umbrella class for dissolve
2018-01-03 17:36:13 +01:00
Barend Gehrels
bb506996f9 [dissolve] add attribute preferred start, and use it to decide which
operation should be selected in case both is union (which is now normal
for dissolve)
2018-01-03 17:07:48 +01:00
Barend Gehrels
0dfd86f678 [dissolve] instead of fixing dead-ends only
(which was actually a workaround and too limited), all turns are
now adapted and intersection is mapped to union
(note: a next commit will work this out further)
2018-01-03 16:27:58 +01:00
Barend Gehrels
4a107545a1 [dissolve] remove distinction between dissolve_union/dissolve_intersection
(note: a next commit will work it out further)
2018-01-03 16:25:39 +01:00
Daniela Engert
8e5fb4f283
Most members of std::allocate are deprecated in C++17
Replace them by their cousins from boost::container::allocator_traits.

Signed-off-by: Daniela Engert <dani@ngrt.de>
2018-01-03 12:52:05 +01:00
Barend Gehrels
f25710c2e5 Merge branch 'feature/intvalid' into feature/dissolve 2018-01-03 11:08:59 +01:00
Adam Wulkiewicz
be53859b57 [formulas] Fix MSVC conversion warnings in inverse formulas. 2018-01-01 23:17:32 +01:00
Barend Gehrels
26a50a2bbd [traverse] fix case #case_141_multi which is isolated with multiple
connections
2018-01-01 16:28:32 +01:00
Barend Gehrels
1a724ed696 [difference] remove the self-turns-which-loop function which is now not necessary anymore
This fixes the remaining error in #ticket_12503 and makes intersection/union more
similar
2017-12-31 23:10:14 +01:00
Adam Wulkiewicz
fe1099019e
Merge pull request #436 from glenfe/develop
Use to_address free function instead of pointer_traits member
2017-12-31 20:49:40 +01:00
Barend Gehrels
e9d8d23601 [overlay] add defensive check 2017-12-31 17:20:11 +01:00
Barend Gehrels
6792d76eac [enrich] remove unused parameter for_operation 2017-12-31 17:19:11 +01:00
Barend Gehrels
9f00c8501b [union] skip discarding i/e turns for union because this causes some turns
to be missed. This fixes the new case #case_recursive_boxes_88
2017-12-31 17:17:21 +01:00
Daniela Engert
e244516a1b
Get rid of iterator.hpp
Boost's iterator.hpp is deprecated (just like std::iterator in C++17). It does nothing but pulling std::iterator into namespace boost and including standard headers 'iterator' and 'cstddef'. Therefore get rid of including iterator.hpp (it had no effect in Boost.Geometry anyway) and replace inheritance by lifting std::iterator's members into the derived class. Instantiating std::iterator is granted with lengthy warning messages by latest MSVC when compiling in C++17 mode.

Signed-off-by: Daniela Engert <dani@ngrt.de>
2017-12-30 11:33:04 +01:00
Barend Gehrels
f704579ed0 [overlay] by default use self-turns. This reverses definition
of define SELF to NO_SELF. Including all unit tests.
2017-12-29 13:17:42 +01:00
Adam Wulkiewicz
a91db3061d [formulas] Fix conversion warning in vertex_longitude formula. 2017-12-28 22:02:33 +01:00
Adam Wulkiewicz
6ec9852697 [algorithms] Fix signed integrals MSVC conversion warnings. 2017-12-27 02:16:47 +01:00
Adam Wulkiewicz
03c48dfca2 [strategies] Fix MSVC x64 conversion warnings. 2017-12-27 01:55:01 +01:00
Adam Wulkiewicz
30bcbf2ced [algorithms] Fix MSVC x64 conversion warnings. 2017-12-27 01:54:45 +01:00
Adam Wulkiewicz
82a177ed7f [algorithms] Fix conversion warning in point_on_surface(). This also fixes the algorithm for negative integral coordinates. 2017-12-27 01:52:46 +01:00
Adam Wulkiewicz
5bf69ab6c6 [algorithms] Add extreme_points() overload using default strategy. 2017-12-27 01:51:02 +01:00
Adam Wulkiewicz
b6287df886 [wkt] Rearrange initialize() code to avoid not returning from function (suppress warning). 2017-12-26 14:10:02 +01:00
Adam Wulkiewicz
2ea729b520 [algorithms][strategies][util] Fix unused parameter warnings. 2017-12-24 05:05:30 +01:00
Adam Wulkiewicz
cd8c50d712 [partition] Fix wrong overlay policy passing. 2017-12-24 05:04:42 +01:00
Adam Wulkiewicz
c0c7318254 [strategies][doc] Update the description of cartesian area strategy. 2017-12-23 01:30:39 +01:00
Adam Wulkiewicz
42ef49e66f [util] Add metafunction selecting type from MPL sequence. 2017-12-22 03:38:52 +01:00
Adam Wulkiewicz
dca303aa3a [algorithms] Support new area strategy interface. 2017-12-22 03:37:44 +01:00
Adam Wulkiewicz
3d8fe63681 [area] Support new strategy interface and resolve strategy for variants. 2017-12-22 03:37:11 +01:00
Adam Wulkiewicz
c13d8bf7f4 [strategies][area] Change area strategies interface.
- Remove PointOfSegment template parameter from all area strategies.
- Replace return_type member type with result_type member
  template/metafunction.
- Replace state_type member type with state member template.
- Remove segment_point_type member type.
- Rename bg::strategy::area::surveyor to bg::strategy::area::cartesian.
- Remove Point template parameter from
  bg::strategy::area::services::default_strategy.
- Add bg::area_result metafunction defining result type for Geometry and
  Strategy.
2017-12-22 03:26:17 +01:00
Vissarion Fysikopoulos
27d8955188 [algorithms] Some solution for correcting distance seg-box for spherical anf geo CS 2017-12-21 15:16:02 +02:00
Barend Gehrels
f6c67daba6 [difference] fix cases where ii turns were not discarded, this
was a todo-item, it was not yet done for difference.

Including unit testcase using this.
2017-12-20 16:22:27 +01:00
Barend Gehrels
68bc3ee07a [dissolve] apply last change for dissolve too 2017-12-20 14:08:13 +01:00
Barend Gehrels
b28b312141 [difference] fix cases where potential inner rings have same area as
outer rings (located elsewhere), due to an earlier optimization
2017-12-20 14:07:51 +01:00
Barend Gehrels
11cff883b0 [intersection] Fix newly found case by removing some conditions from
handle_self_turns and setting ii-self-turns as non-startable instead of
discarding them.
2017-12-16 18:52:39 +01:00
Barend Gehrels
7552200cfa [traverse] use new method operation_from_rank in two other places as well 2017-12-15 14:37:55 +01:00
Barend Gehrels
556896c7cc [traverse] need to select on operations in selecting ranks, it is not
done later. Small regression found by recursive_polygons
2017-12-15 14:37:17 +01:00
Barend Gehrels
5d99d1608d [overlay] fix new #case_recursive_boxes_82 by greatly simplifying the code.
patterns/aggregations were added to solve specific intersection problems
and validity in the past. In the meantime self-turns and isolation information
is much better, and those code is not needed anymore.
This also fixes the #mysql_regression_1_65_2017_08_31
This also makes union/intersection code for handling clusters much more similar
2017-12-15 13:20:41 +01:00
Barend Gehrels
f0d74e3386 [union] simplify cluster behaviour by skipping aggregation step 2017-12-15 12:34:25 +01:00
Barend Gehrels
2cd973df85 Merge branch 'develop' into feature/intvalid 2017-12-15 11:05:16 +01:00
Adam Wulkiewicz
c83bc33cb4 [overlay] Add missing includes in add_rings.hpp 2017-12-15 01:16:36 +01:00
Barend Gehrels
b9d0e73310 [dissolve] rename variables to avoid shadowing 2017-12-14 17:22:34 +01:00
Barend Gehrels
bdeed328ff [dissolve] fix dead ends, necessary to solve case #dissolve_star 2017-12-14 16:23:09 +01:00
Barend Gehrels
4c217dd106 [dissolve] correct orientation for rings without self-turns 2017-12-14 15:30:11 +01:00
Barend Gehrels
9b138e2a98 [traverse] skip switch detector for dissolve 2017-12-14 15:29:28 +01:00
Barend Gehrels
fea0a495f7 [enrich] skip discarding turns based on counts left/right 2017-12-14 15:28:23 +01:00
Barend Gehrels
d564e8f81c [overlay] fix typo 2017-12-14 15:27:43 +01:00
Barend Gehrels
f2613776fd Merge branch 'feature/intvalid' into feature/dissolve 2017-12-14 10:49:42 +01:00
Vissarion Fysikopoulos
ea181b43f1 [algorithms] [strategies] [tests] Fix meridian distance point to meridian segment 2017-12-13 19:37:13 +02:00
Vissarion Fysikopoulos
5a0cfff3fa [algorithms] [envelope] Add meridian segment case 2017-12-11 17:50:30 +02:00
Vissarion Fysikopoulos
2acdbf714f [strategies] Fix meridian case bug for pt-sgmt geo distance 2017-12-11 17:45:09 +02:00
Vissarion Fysikopoulos
1451bead66 [strategies] [algorithms] Add support for geographic box-sgmt distance 2017-12-11 17:41:28 +02:00
Adam Wulkiewicz
b04a0b97b7 [densify] Rename complexify algorithm and strategies to densify. 2017-12-06 16:15:06 +01:00
Barend Gehrels
f0619cb19a [enrich] combine expressions, set cluster, add comments 2017-12-06 15:43:11 +01:00
Barend Gehrels
dc7c17347f [traverse] dont use blocked turns for region, and simplify
expressions by static consts
2017-12-06 15:42:27 +01:00
Barend Gehrels
080f0f22f4 [traverse] fix case where hole of one of the inputs formed a
disconnected interior (invalid). In the end it is fixed by only
deleting code. This code is not really old but added to fix some
cases, which are finally fixed in a more generic way.

It fixes a new case and also enhances #case_141_multi
2017-12-06 14:25:42 +01:00
Barend Gehrels
536f001483 [traverse] update debug info with removed fields 2017-12-06 11:33:56 +01:00
Barend Gehrels
d52139934c [traverse] also remove now unused loop setting local region ids 2017-12-06 11:27:12 +01:00
Barend Gehrels
fa6d0ce2ee [traverse] replace switch_source by inspecting region ids locally 2017-12-06 11:23:27 +01:00
Barend Gehrels
d096cc8230 [traverse] use passed turn instead of turn index 2017-12-06 11:06:50 +01:00
Barend Gehrels
8f6cf2681b [traverse] remove from cluster switch_source which is not used anymore 2017-12-06 10:08:58 +01:00
Vissarion Fysikopoulos
a0b78391e0 [strategies] [tests] Multipoint box distance support and tests. 2017-12-05 15:43:54 +02:00
Adam Wulkiewicz
80003b79c1 Merge branch 'develop' into feature/complexify 2017-12-04 22:35:47 +01:00
Adam Wulkiewicz
281b072d25 Merge branch 'develop' into bg-prepare 2017-12-04 22:34:14 +01:00
Adam Wulkiewicz
9e882889f4 [formulas] Fix thomas direct formula for meridian segments (azi=0, lat1<0). 2017-12-04 22:31:26 +01:00
Adam Wulkiewicz
ff2aaf1ce5 [complexify] Fix compilation errors (includes, tparams, names). 2017-12-04 22:11:31 +01:00
Vissarion Fysikopoulos
4b9cf1288d [stategies] Clean-up code for pt/box box/box strategies 2017-12-04 17:32:17 +02:00
Barend Gehrels
89ef25ab32 Merge branch 'develop' into bg-prepare 2017-12-01 21:42:29 +01:00
Vissarion Fysikopoulos
2ecd4d570f [formulas] [strategies] Meridian crossing pole methods for consistency 2017-12-01 17:32:00 +02:00
Vissarion Fysikopoulos
0632420a46 [strategies] [formulas] Static methods for meridian distance special cases 2017-12-01 16:52:26 +02:00
Vissarion Fysikopoulos
e4a587c0f4 [strategies] [tests] Test degenerate pt/box and box/box cases; fix a bug in pt-sgmt distance strategy 2017-12-01 14:58:16 +02:00
Adam Wulkiewicz
149d817d48 [complexify] Add variant support and make interface consistent with simplify. 2017-12-01 04:12:58 +01:00
Adam Wulkiewicz
9a23ca90f0 [strategies] Add cartesian complexify() strategy. 2017-12-01 02:52:22 +01:00
Vissarion Fysikopoulos
0a3204a494 Merge remote-tracking branch 'origin/develop' into feature/distance_box 2017-11-30 16:03:56 +02:00
Adam Wulkiewicz
69a2516373 [strategies] Add spherical and geographic complexify() strategies. 2017-11-30 01:36:16 +01:00
Adam Wulkiewicz
f7de658c2c [algorithms] Add complexify() algorithm. 2017-11-30 01:35:28 +01:00
Barend Gehrels
0e9e6caded [buffer][fix] in deflated buffers it could occur that a turn was missed
(so: not within original) and traveled to itself. This is fixed by checking
for deflated buffers (or inflated interior rings) if the minimum number
of turns is 3.
2017-11-29 16:27:01 +01:00
Barend Gehrels
f982122b94 Merge branch 'develop' into bg-prepare
# Conflicts:
#	extensions/test/algorithms/dissolve.cpp
#	extensions/test/gis/io/wkb/read_wkb.cpp
#	include/boost/geometry/extensions/algorithms/dissolve.hpp
2017-11-29 09:45:08 +01:00
Barend Gehrels
52e26ab6c1 [dissolve] minor, fix line length 2017-11-24 13:32:19 +01:00
Barend Gehrels
bf0ebd31c5 [dissolve][fix] use rescale policy to fix some cases defined as <float> 2017-11-24 13:31:59 +01:00
Barend Gehrels
b65b212f99 [dissolve] make sure that for dissolve both startable and selection of
union operation does not make use of counts
2017-11-24 12:21:59 +01:00
Barend Gehrels
e474309feb [dissolve] fix selecting the right turn for traveling to itself
This fixes the reported testcase #dissolve_mail_2017_10_26_a
2017-11-24 12:01:35 +01:00
Glen Fernandes
1d0dfdb9ca Use to_address free function instead of pointer_traits member
The free function was accepted and voted into C++20 (P0653R2).
2017-11-23 23:26:57 -05:00
Barend Gehrels
3307dc3b2b Merge branch 'develop' of https://github.com/boostorg/geometry into develop 2017-11-23 17:26:52 +01:00
Barend Gehrels
fc8cc479fa [traverse] make select_source more generi 2017-11-23 17:15:48 +01:00
Barend Gehrels
751b05ddc1 [buffer] revert one change (should keep multi_index) and
update tests now that validity is improved (but not yet solved).

Also 2 testcases are added generating uu points
2017-11-23 17:03:41 +01:00
Barend Gehrels
88b9e041ed [buffer] for uu-turns, use piece_index instead of multi_index because
a uu turn might be formed at the same source multi-index
2017-11-23 16:02:33 +01:00
Barend Gehrels
ec454bbce1 [buffer] add the necessary piece-information to operators and debug info 2017-11-23 16:01:49 +01:00
Barend Gehrels
1335aac14d [buffer] remove exception for buffer, it is outdated and its omission
is necessary to calculate switch_source correctly
2017-11-23 15:44:30 +01:00
Adam Wulkiewicz
48d2d99b2b [formulas][strategies] Move updating of state from area formulas to strategy where it should be. This also fixes conversion warning. 2017-11-23 15:32:54 +01:00
Adam Wulkiewicz
0e7614f27d
Merge pull request #433 from vissarion/feature_fix_pt_sgmt_pole
Fix pt-sgmt strategy for special meridian segments passing through poles
2017-11-23 02:37:11 +01:00
Adam Wulkiewicz
fde5475144 [overlay] Restore old behavior of union for invalid polygons, changeable with #define. 2017-11-23 00:08:13 +01:00
Adam Wulkiewicz
fda7dbb297 [formulas] Improve robustness and add optimization in sjoberg_intersection formula.
- After newton's method check the resulting longitude and finish only if
  it's between segments' endpoints. If it isn't use more robust method.
- Don't perform spheroidal calculation if model is a sphere.
2017-11-22 18:49:17 +01:00
Adam Wulkiewicz
1e1d050bbd [formulas] In Andoyer formula always generate azimuth=0 for antipodal points (besides when p1 is north pole). 2017-11-22 18:41:40 +01:00
Adam Wulkiewicz
ab5fe53c6b [envelope] Fix segment envelope for antipodal endpoints. 2017-11-20 21:07:51 +01:00
Adam Wulkiewicz
a0ab628707 [formulas] Fix formulas for antipodal endpoints (andoyer inverse, thomas direct, sjoberg intersection). 2017-11-20 21:07:00 +01:00
Barend Gehrels
44f61d05bb Merge branch 'develop' of https://github.com/boostorg/geometry into develop 2017-11-19 16:01:09 +01:00
Vissarion Fysikopoulos
92dc0ce8e3 [strategies] Use more efficient meridian arc length call from distance strategy 2017-11-16 18:31:55 +02:00
Adam Wulkiewicz
0b8a704ae9 [core][overlay] Improve/fix add_rings().
Support passing of area strategy into add_rings() and pass it from
overlay, buffer and dissolve.

Add invalid_output_exception and if preprocesor definition is
defined throw it if an intermediate result in add_rings() has negative
area which means that in non-cartesian CS too big polygon is the result.

If area of the intermediate result is 0 ignore it.
2017-11-15 21:23:49 +01:00
Barend Gehrels
1d7d9a9a00 [buffer] fix generation of buffer's interior ring when there is a touching point,
by selecting the right operation
2017-11-15 11:58:27 +01:00
Adam Wulkiewicz
a4ba4dc276
Merge pull request #434 from awulkiew/fix/geographic_union
Fix for union in geographic CS not generating result if it's too big
2017-11-15 00:25:03 +01:00
Vissarion Fysikopoulos
fcc114ee85 [strategies] Meridian distance without creating points 2017-11-13 13:28:40 +02:00
Adam Wulkiewicz
20a994c8bb [buffer] Add missing function argument when not defined BOOST_GEOMETRY_BUFFER_USE_SIDE_OF_INTERSECTION. 2017-11-12 17:01:55 +01:00
Adam Wulkiewicz
ed21755449 [overlay] For union do not check area of result before adding polygons to the output. 2017-11-11 01:20:51 +01:00
Vissarion Fysikopoulos
236ee9aba5 [strategies] Fix bugs in pt-segmt distance; parametric latitude use and sign of derivative 2017-11-09 17:16:47 +02:00
Barend Gehrels
e9b52567fe [buffer] avoid using the flat-end for anything else than linear features,
even if end-strategy is specified for polygons
2017-11-08 17:54:50 +01:00
Barend Gehrels
694299b7c7 [buffer] change last fix by adding is_flat_start/end properties to pieces.
These marks are used to check if a turn is really inside the generated buffer,
or on the flat end (then it should be kept).
This will NOT YET work for one-sided buffers.
2017-11-08 17:47:46 +01:00
Barend Gehrels
f6808f8277 [buffer] fix MYSQL testcase 25662426 2017-11-08 15:37:27 +01:00
Vissarion Fysikopoulos
a66df732bb [formulas] [strategies] Move pt-box and box-box algorithm from formulas to strategies 2017-11-08 14:42:19 +02:00
Vissarion Fysikopoulos
10e88b6bda Merging with develop; use new pt-sgmt distance interface 2017-11-08 13:09:07 +02:00
Vissarion Fysikopoulos
c2ac26eab9 [strategies] [tests] Fix pt-sgmt strategy for special meridian segments passing through poles 2017-11-07 17:35:05 +02:00
Adam Wulkiewicz
0f60b00d78 Merge branch 'develop' into bg-prepare 2017-11-07 12:14:35 +01:00
Tristan Carel
b520265946
Fix documentation typos in rtree 2017-11-07 08:59:08 +01:00
Adam Wulkiewicz
a7cf3f347a [io] Add workaround for clang-3.0_3 compilation issue. 2017-11-06 16:58:29 +01:00
Adam Wulkiewicz
566549fe47 Merge branch 'develop' into bg-prepare 2017-11-02 03:00:39 +01:00
Vissarion Fysikopoulos
8d412963c8 [formulas] [strategies] Move point-segment distance formula to strategies 2017-11-01 23:41:36 +02:00
Vissarion Fysikopoulos
730d91c3b7 [formulas] Missing include files and namespaces 2017-11-01 22:05:44 +02:00
Vissarion Fysikopoulos
8d29c629d0 [test] Special case handling for Pt-Sgmt distance when segment contains the pole 2017-11-01 21:01:35 +02:00
Vissarion Fysikopoulos
b1fe2ad934 [formulas] Use new distance function with meridian formula optimization everywhere in point-segment distance formula 2017-11-01 20:02:49 +02:00
Vissarion Fysikopoulos
e099a819e7 [formulas] Clean-up code/comments 2017-11-01 19:55:41 +02:00
Vissarion Fysikopoulos
1c5d10fb77 [formulas] Thomas formula return zero for distance between poles. Fixed by calling meridian formula for this case. 2017-11-01 19:44:28 +02:00
Vissarion Fysikopoulos
f458d8d28e [formulas] [strategies] Distance point-segment use the meridian formula. Use new static version of distance strategy. 2017-11-01 17:42:48 +02:00
Adam Wulkiewicz
639f70a44a [formula][test] Remove/update includes (srs). 2017-10-31 19:38:28 +01:00
Adam Wulkiewicz
bd4cc0d697 Merge commit '7e366baca979' into bg-prepare 2017-10-31 16:43:59 +01:00
Adam Wulkiewicz
2bf59e7a17
Merge branch 'develop' into feature/projections 2017-10-31 16:38:59 +01:00
Adam Wulkiewicz
b17ad43f7f [strategy] Add missing include in geographic distance strategy. 2017-10-31 16:28:41 +01:00
Adam Wulkiewicz
ede7f02f4f
Merge branch 'develop' into feature/meridian_andoyer 2017-10-31 15:50:42 +01:00
Adam Wulkiewicz
88e8e268e0
Merge pull request #410 from vissarion/feature/distance_point_segment
Geographic distance between a point and a segment
2017-10-31 15:46:19 +01:00
Adam Wulkiewicz
7ce15eb837 [projections] Fix names invertable -> invertible. 2017-10-31 15:07:26 +01:00
Adam Wulkiewicz
269525c37b [projections] Add missing inline keywords in setup_XXX() functions definitions. 2017-10-30 22:56:00 +01:00
Adam Wulkiewicz
e450c3b692 [projections] Implement static projection hybrid interface.
- Remove string parameter from static_proj4.
- Add 2 projection<> ctors taking srs::proj4, disabled by default with
  ifdef.
- Modify and use EPSG, ESRI and IAU2000 traits to use hybrid interface.
2017-10-30 20:04:51 +01:00
Adam Wulkiewicz
8853442dd2 [projection] Fix double to int conversion warnings in isea projection. 2017-10-30 17:57:13 +01:00
Adam Wulkiewicz
21ca6dbd4f [projections] In implementation on aeqd projection make free functions inline. 2017-10-30 17:56:39 +01:00
Adam Wulkiewicz
f3fb8821f6 [projections] Support static o_proj parameter in ob_tran projection (internally use static projection). 2017-10-30 17:54:30 +01:00
Adam Wulkiewicz
595d6736d9 [projections] Add static parameters to static_projection traits.
- The intention is to add support for guam and o_proj.
- Implement static_proj4-based SRID traits and define epsg, esri and
  iau2000 traits in terms of static_proj4.
- Support static guam parameter and spheroid/sphere definition in aeqd
  projection.
2017-10-29 03:16:51 +01:00
Adam Wulkiewicz
14592168c4 [relate] Fix reference to temporary (reported by clang-4.0 asan). 2017-10-27 01:22:01 +02:00
Adam Wulkiewicz
968035415f Merge pull request #424 from awulkiew/fix/geographic_preceding
Fix preceding/exceeding in geographic CS
2017-10-25 23:28:14 +02:00
Adam Wulkiewicz
6665497ecc Merge pull request #423 from awulkiew/fix/setops_la
Fix L/A set operations
2017-10-25 23:28:02 +02:00
Adam Wulkiewicz
375e39a0db [projections] Redesign static_proj4<> interface and parameters.
- Take up to 10 types/parameters in static_proj4<>.
- Static parameters now can be passed in arbitrary order and are searched
  at compile-time.
- With static_proj4 run-time proj, ellps and datum parameters are ignored
  completly.
- Move static parameters into srs::par4 namespace.
- Add parameter wrappers/names proj<>, ellps<>, datum<>, etc.
- Adapt static_projection, epsg, esri, iau2000, etc. traits accordingly.
2017-10-25 00:47:04 +02:00
Adam Wulkiewicz
eb56e0aa23 [projections] Update ellpses and datums. 2017-10-25 00:46:28 +02:00
Barend Gehrels
b705d53ae3 Merge branch 'develop' into bg-prepare
# Conflicts:
#	extensions/test/algorithms/dissolve.cpp
#	include/boost/geometry/extensions/algorithms/dissolve.hpp
#	include/boost/geometry/extensions/multi/algorithms/dissolve.hpp
#	include/boost/geometry/extensions/nsphere/algorithms/expand.hpp
2017-10-23 23:39:21 +02:00
Barend Gehrels
36d1fe7657 Merge branch 'feature/intvalid' into develop 2017-10-23 18:39:46 +02:00
Barend Gehrels
94ce58de02 [overlay] fix bug in new code, it should check for the operation because
it can happen that union travels to itself and that is irrelevant
2017-10-23 11:26:21 +02:00
Barend Gehrels
38c38397cc [within] remove unused constants 2017-10-23 10:10:16 +02:00
Adam Wulkiewicz
536cd6ab8e [srs][projections] Implement one static aeqd projection instead of two (aeqd and aeqd_guam).
Also fix some calculation-type-related errors.
2017-10-20 21:01:31 +02:00
Adam Wulkiewicz
7aac227db8 [srs][projections] Implement one static ob_tran projection instead of two (oblique and transverse). 2017-10-20 19:46:51 +02:00
Adam Wulkiewicz
4605301ea3 [srs][projections] Add create_new() function hiding factory inside. 2017-10-20 19:45:16 +02:00
Barend Gehrels
b39b9a319b [dissolve] reject negative child rings of negative parents (the parents
are reversed later), the same way as positive child rings of positive parents
are removed. This fixes the hexagram case and also dissolve_10 (both ccw)
2017-10-20 15:11:19 +02:00
Barend Gehrels
13a8d13cb6 [dissolve] fix cases where turns were missed because 1) they were on adjacent
segments and 2) vertical segments were not sectionalized properly for this purpose.
2017-10-20 12:48:13 +02:00
Adam Wulkiewicz
019f9e720f [srs] In transformation when preparing the range take into account the src projection. Also get projection and parameters once per geometry v.s. once per range. 2017-10-19 22:00:28 +02:00
Barend Gehrels
0f098948b2 [wkt] Avoid any breaking change in wkt by using the old default for rings,
and for boxes take by default always all 5 points
2017-10-19 16:36:09 +02:00
Barend Gehrels
38aa0c24a9 [correct] Split off correct_closure from correct
Including unit test
2017-10-19 15:51:43 +02:00
Barend Gehrels
917b18e66c [wkt] apply the wkt change for all geometries instead of only polygon.
This is necessary for the splitted correct_closure algorithm, which needs
an exact WKT representation of its geometry
2017-10-19 15:27:47 +02:00
Adam Wulkiewicz
3dedf97bf5 [strategy][transform] Replace project_transformer with srs_transformer. 2017-10-19 00:00:40 +02:00
Barend Gehrels
fac0c80692 [overlay] fix sort order, which might contain duplicate turn_index
values in e.g. buffer
2017-10-18 15:34:07 +02:00
Adam Wulkiewicz
4a5542a418 [srs] Improve consistency of error handling in projection and transformation.
Try to convert all of the points. If some of them were not converted set
them to invalid state (original HUGE_VAL) and return false from function.
2017-10-17 22:52:45 +02:00
Adam Wulkiewicz
615584301f [convert] Move ConvertPointPolicy from range_to_range struct template argument to apply() function argument. 2017-10-17 22:51:56 +02:00
Adam Wulkiewicz
19ccd06551 [srs] Consistently check raw coordinate 0 for HUGE_VAL in transformation. 2017-10-16 17:13:17 +02:00
Adam Wulkiewicz
8321ebd9d1 [srs] Comment out warning printing to stderr in aitoff projection. 2017-10-15 01:12:52 +02:00
Adam Wulkiewicz
49a38f9178 [srs] Add/modify EPSG, ESRI and IAU codes. Make them optionally included.
By default proj4 format is available.
Rearrange the code and modify includes.
2017-10-12 23:24:33 +02:00
Adam Wulkiewicz
6598f5af2e Merge branch 'develop' into feature/projections
Conflicts:
	test/formulas/inverse.cpp
2017-10-11 19:57:14 +02:00
Adam Wulkiewicz
4db38089d1 [srs] Support various CS units combinations in transformation. Also remove unnecessary temporary points. 2017-10-11 19:17:53 +02:00
Adam Wulkiewicz
a6ef269196 [convert] Add ConvertPointPolicy to range_to_range conversion struct. 2017-10-11 19:16:53 +02:00
Barend Gehrels
877ef98340 [overlay] add check to skip self-turns in rings, boxes, and polygons without
interior rings or multi-polygons with only one such polygon
2017-10-11 14:58:44 +02:00
Barend Gehrels
b20aeba724 [overlay] fix cases where non-traversed rings were incorrectly added.
This also changes the order of checks
2017-10-11 13:54:48 +02:00
Barend Gehrels
4d1b094e6a [overlay] discard self-turns i/u for intersection traveling to themselves 2017-10-11 12:58:29 +02:00
Barend Gehrels
9a022331b2 [overlay] insert missing curly brace (earlier commit error) 2017-10-11 10:42:52 +02:00
Barend Gehrels
8a136b86b1 Merge branch 'develop' into feature/intvalid 2017-10-11 10:19:58 +02:00
Adam Wulkiewicz
f85af69b15 [srs] In transformation convert per range instead of per geometry and use temporary range if calculation type is more precise than the output geometry coordinate type. 2017-10-09 23:47:54 +02:00
Adam Wulkiewicz
abfaae26d3 [srs] Support all geometries (besides Box) in transformation. 2017-10-08 03:00:36 +02:00
Barend Gehrels
1187e1e805 [dissolve] fix case with two triangles which needs to be corrected w.r.t.
next turn if there is only one turn
2017-10-06 15:46:20 +02:00
Barend Gehrels
a73246bbd2 [dissolve] change in order of algorithm / comment 2017-10-06 13:46:01 +02:00
Barend Gehrels
7783eb6a24 [overlay] distinguish dissolve intersection/union to be able to avoid
self-turn being true for dissolve (otherwise all is true), to avoid having
those turns discarded.
This fixes some (but not all) of the regressions detected earlier
2017-10-06 12:30:48 +02:00
Barend Gehrels
5eed687af3 [dissolve] clear turns between the two phases of enrich/traverse 2017-10-06 11:21:50 +02:00
Barend Gehrels
6e02971a66 [test] enhance dissolve SVG with information from visitor 2017-10-06 10:52:42 +02:00
Barend Gehrels
2ece2f2fca [dissolve] pass visitor, this makes dissolve_overlay_visitor redundant 2017-10-06 10:01:46 +02:00
Barend Gehrels
aaf2a5f4d6 [dissolve] use the map, which is now passed, instead of the old one
which was created explicitly
2017-10-06 10:00:36 +02:00
Barend Gehrels
641ee18257 [dissolve] fix call to traverse which needs extra argument now
(which is not (yet) used for dissolve)
2017-10-06 09:18:10 +02:00
Barend Gehrels
9e230f972f Merge branch 'develop' into feature/intvalid 2017-10-04 18:25:37 +02:00
Barend Gehrels
65a5c2ba53 [overlay] fix bug (it always returned false), and it should not consider
all turns in a cluster here. This fixes #case_recursive_boxes_76
Including unit test
2017-10-04 18:12:37 +02:00
Barend Gehrels
c5710b2ab9 [overlay] skip ranks of isolated regions 2017-10-04 14:00:40 +02:00
Vissarion Fysikopoulos
eca31647a8 [distance] [test] Meridian distance computation actived in distance strategy 2017-09-28 16:45:46 +01:00
Barend Gehrels
6cce6a0686 [overlay] add explaining pictures 2017-09-27 13:24:18 +02:00
Barend Gehrels
210b662597 [overlay] correct (partly) the behaviour of isolation detection for
an isolated ring, connected to another isolated ring which is
connected multiple times to it
2017-09-27 13:05:25 +02:00
Vissarion Fysikopoulos
866b297482 [formulas] [tests] Distance point-segment; normalization and some changes in the method and tests 2017-09-21 13:22:51 +01:00
Barend Gehrels
3160ee6804 [overlay] fix additional case where isolation information was incorrect.
Including unit test. This also influences two other testcases but they
are not completely fixed by this fix
2017-09-20 17:00:52 +02:00
Barend Gehrels
ca62efc16d [overlay] extract method has_single_connection_point 2017-09-20 13:32:22 +02:00
Barend Gehrels
f572abf5c1 [overlay] fix case which was not detected as isolated because it was
not clustered. Isolation is now independent on clustering.
Including unit test
2017-09-20 12:52:18 +02:00
Barend Gehrels
79e0e5d258 [overlay] for convenience and for next step, add is_clustered method 2017-09-20 12:43:09 +02:00
Barend Gehrels
35e426700c [overlay] split methods to assign connected regions when all region ids are assigned 2017-09-20 11:04:51 +02:00
Barend Gehrels
31f1872e46 [overlay] fix debug information 2017-09-20 10:21:50 +02:00
Vissarion Fysikopoulos
d9f3641795 [formulas] [strategies] [tests] Code simplification for special cases and some unit test cases 2017-09-19 18:01:43 +03:00
Vissarion Fysikopoulos
19eda49034 [strategies] [formulas] Some code cleaning 2017-09-19 17:28:08 +03:00
Vissarion Fysikopoulos
3b05e5ca46 [strategies] [formulas] Replace course algorithm by azimuth formula 2017-09-19 17:25:47 +03:00
Vissarion Fysikopoulos
02de7cc212 [formulas] [strategies] Fix cross track distance for both spherical and geographic 2017-09-19 15:13:33 +03:00
Adam Wulkiewicz
bc60e0737b [sections] Fix section_functions for boxes covering more than half of the globe. 2017-09-17 21:13:24 +02:00
Adam Wulkiewicz
d139bfd597 [formulas][strategies] Add authalic_radius_sqr() formula and use it in geographic area strategy. 2017-09-14 21:19:01 +02:00
Vissarion Fysikopoulos
2bc7063e73 [formulas] [distance] Use mean radius formula in distance point segment formula 2017-09-13 18:06:53 +03:00
Vissarion Fysikopoulos
098e43e732 Merge branch 'develop' into feature/distance_point_segment 2017-09-13 18:00:46 +03:00
Barend Gehrels
800baaac14 [overlay] fix recent change, assign best_code (this avoids regression in buffer) 2017-09-13 16:05:59 +02:00
Barend Gehrels
1849ddca84 [overlay] need to mark cc turns as traversed to avoid regression in
cases 75 and 76 which otherwise would have a duplicate ring in union
2017-09-13 13:08:11 +02:00
Barend Gehrels
ce9928a1aa [overlay] fix case which needed a specific selection of a matching ranked point 2017-09-13 13:07:10 +02:00
Vissarion Fysikopoulos
4e1e18fa39 [formulas] [distance] Rename inverse distance formula type name in point-segment formula 2017-09-13 11:28:24 +03:00
Adam Wulkiewicz
650451f977 [formulas][strategies] Add/use mean_radius and unit_spheroid functions. 2017-09-12 20:55:04 +02:00
Vissarion Fysikopoulos
47e2f0b4e9 [test] Tests for small and large distances from point to segment 2017-09-12 16:45:31 +03:00
Adam Wulkiewicz
abe8a7e7f3 [intersection] Fix L/A->P not returning the first endpoint of Linear on boundary of Areal. 2017-09-11 22:59:03 +02:00
Adam Wulkiewicz
da13a23824 [overlay] Fix L/A case - entire linestring on boundary of polygon. 2017-09-11 13:37:31 +02:00
Max Kellermann
2bc6737309 enrich_intersection_points: fix to_index0/to_index1 confusion
Found by Coverity:

 "pointless_expression: The expression to_index1 >= 0 && to_index1 >=
 0 does not accomplish anything because it evaluates to either of its
 identical operands, to_index1 >= 0."
2017-09-08 15:21:15 +02:00
Adam Wulkiewicz
653dc28bb9 [overlay] Fix follow (setops L/A) by using linear turns (from relate). 2017-09-07 22:48:10 +02:00
Vissarion Fysikopoulos
ed80e868c2 [formulas] Series expansion formula for distance on meridians 2017-09-06 17:10:32 +03:00
Barend Gehrels
6e4c61d202 [overlay] add check for self-cluster, which should be located within
the other geometry to avoid creating false rings
2017-09-06 14:40:44 +02:00
Barend Gehrels
564b261197 fix int cluster_id to signed_size_type 2017-09-06 11:43:36 +02:00
Barend Gehrels
df96ce3bcd fix more region_id occurences to signed_size_type 2017-09-06 11:43:14 +02:00
Barend Gehrels
5125f938d8 Fix std::size_t types of turn_index to signed_size_type 2017-09-06 11:42:31 +02:00
Barend Gehrels
25ee55003b Fix int types of region_id to signed_size_type 2017-09-06 11:36:22 +02:00
Barend Gehrels
41ae79cf15 Fix for C++03 2017-09-06 10:58:46 +02:00
Barend Gehrels
e9c1ed497f Merge branch 'develop' of https://github.com/boostorg/geometry into develop 2017-09-06 09:40:11 +02:00
Vissarion Fysikopoulos
cd3f264a27 [formulas] [distance] Activate differential quantities computation in distance point segment 2017-08-31 11:02:55 +03:00
Barend Gehrels
ccd85b37d0 [buffer] add parameter added in the meantime 2017-08-30 18:45:39 +02:00
Vissarion Fysikopoulos
dbe6df7ad3 [formulas] [strategies] [distance] Change interface and earth radius in distance point segment geographic formula 2017-08-30 15:04:01 +03:00
Adam Wulkiewicz
1bc57cc645 Merge branch 'develop' into fix/strategy_winding
Conflicts:
	include/boost/geometry/strategies/strategies.hpp
2017-08-30 13:42:39 +02:00
Adam Wulkiewicz
c5e12820e1 Merge pull request #413 from awulkiew/fix/non_cartesian_compare
Fix non-cartesian compare function objects (bg::less, bg::equal_to, bg::greater).
2017-08-30 13:39:57 +02:00
Barend Gehrels
0591aa63ea Merge branch 'develop' into feature/intvalid 2017-08-30 13:30:46 +02:00
Barend Gehrels
64a7c46ab7 [overlay] finetune condition by still deleting colocated self-ii turns
when there are also blocked turns in the cluster
2017-08-30 12:58:43 +02:00
Barend Gehrels
a449c39e6f [overlay] fix missing ring due to discarded self-intersection turn 2017-08-30 12:56:48 +02:00
Barend Gehrels
32705f5b32 [overlay] change is_closed to using count_left for decision to
include polygons
2017-08-23 15:37:00 +02:00
Barend Gehrels
1dd5431560 [overlay] check colocated turns for being blocked. This also moves
the place where is_closed is set
2017-08-23 13:51:27 +02:00
Barend Gehrels
6db9266768 [overlay] replace colocated_ii / uu with has_colocated_both
because only one of them is used.
2017-08-23 13:49:02 +02:00
Barend Gehrels
fae33e64f8 [overlay] remove condition which is not active anymore 2017-08-23 13:43:36 +02:00
Barend Gehrels
ccadeaeeff [overlay] move declaration (this is missing in an earlier commit) 2017-08-23 11:25:18 +02:00
Barend Gehrels
46e4533461 [overlay] add missing include 2017-08-23 11:06:38 +02:00
Barend Gehrels
392a724693 [overlay] fix inclusion of rings which were marked as blocked. 2017-08-23 11:06:18 +02:00
Adam Wulkiewicz
95ffd9efbc [strategies] Relocate CS-specific winding strategies. 2017-08-22 01:11:51 +02:00
Adam Wulkiewicz
74f13547be [strategies] Update intersection and within strategies after change in winding strategy. 2017-08-22 00:33:39 +02:00
Adam Wulkiewicz
9f4682403e [strategies] Fix winding strategy for specific cases in spherical and geographic.
Implement as separate strategies per CS: cartesian_winding,
spherical_winding and geographic_winding. The last one taking Geodesic
FormulaPolicy and Spheroid (interface consistent with other geographic
strategies).

Leave agnostic winding strategy for backward compatibility, sort of
because SideStrategy parameter was removed so it's compatible with Boost
1.63 and below. Internally using one of the above strategies.
2017-08-22 00:28:08 +02:00
Barend Gehrels
4e99afb9d0 [overlay] revise implementation to set traversed - now set in traversal itself,
which makes code in overlay.hpp a bit less complex
2017-08-16 16:25:25 +02:00
Adam Wulkiewicz
11ce2ac02e [algorithms] Fix direction_code different Point types handling and unused variable warning. 2017-08-14 17:39:18 +02:00
Adam Wulkiewicz
42902826be [envelope][expand] Add support for spherical polar Boxes and Segments. 2017-08-06 19:35:54 +02:00
Adam Wulkiewicz
197d396218 [strategies] In cartesian side strategy use cartesian compare strategy directly instead of relate::less<>. 2017-08-05 01:55:25 +02:00
Adam Wulkiewicz
7104c112b1 [algorithms] Remove relate::less<> and replace it with geometry::less<>. 2017-08-05 01:54:27 +02:00
Adam Wulkiewicz
e3e06f7e96 [envelope][expand] Stop using bg::less<>.
bg::less<> now use math::equals() consistently also in single-Dimension
  version, so shouldn't be used for expanding a Box.
Implement expand(Box, Pt) for spherical polar.
Remove compare "strategies" (Predicates) template parameters from expand
  detail and dispatch templates.
2017-08-05 01:45:32 +02:00
Adam Wulkiewicz
3ba45ba8cc [math][detail] Support spherical_polar CS in normalization utils. Also add some helper functions (checking poles and antimeridians). 2017-08-05 01:41:55 +02:00
Adam Wulkiewicz
fdca32a6e5 [compare] Support non-cartesian CSes in less<>, greater<> and equal_to<>.
Improve consistency with single-Dimension version and equals(Pt, Pt).
Always use math::equals when checking equality of coordinates,
  also in single-Dimension versions.
Check antimeridians and poles also when only longitudes are compared
  (At poles all longitudes are considered equal).
Add template argument defaulting to void and specialization defining
  operator comparing objects of 2 different types (after C++14).
Remove Strategy template parameter which only allowed to pass standard
  predicates (e.g. std::less) so was unusable and this design was forcing
  unnecessary equal_to call when math::equals() failed.
Implement compare strategies the same way how other strategies are
  implemented. Add compare:: cartesian and spherical strategies and
  compare::services::default_strategy traits.
2017-08-05 01:16:16 +02:00
Adam Wulkiewicz
f06a5a5098 Merge branch 'develop' into bg-prepare 2017-08-02 04:05:50 +02:00
Adam Wulkiewicz
98b8821be6 [sectionalize] Add full namespace to function call (mingw workaround). 2017-08-02 02:52:02 +02:00
Adam Wulkiewicz
35897a6a81 Merge pull request #412 from awulkiew/fix/algorithms_side_strategy
Geographic coordinate system related fixes.
2017-07-31 18:30:25 +02:00
Adam Wulkiewicz
f42c1eadf9 Merge branch 'develop' into bg-prepare 2017-07-31 18:27:52 +02:00
Barend Gehrels
56b5d7bf8a [overlay] fix bug where self-turn was not startable, and therefore an
interior ring was missing
2017-07-31 12:14:40 +02:00
Adam Wulkiewicz
e7463b35f0 [buffer][overlay] Fix get_turns/secionalize/partition for non-cartesian CS.
- Handle longitudes differently in section_functions preceding() and
  exceeding().
- Calculate directions in sectionalize differently for longitudes.
- Update buffer and get_turns due to the above changes.
2017-07-27 03:31:35 +02:00
Barend Gehrels
d25fe47a93 [overlay] fix case which was not taking correct rank 2017-07-26 14:26:44 +02:00
Vissarion Fysikopoulos
0c8e12d1bb [distance] [test] Geo box-box distance tests 2017-07-25 13:51:37 +03:00
Vissarion Fysikopoulos
1728b7a706 [distance] [test] Geo point-box tests 2017-07-25 12:25:04 +03:00
Vissarion Fysikopoulos
f015a04d80 [distance] Distance box-box strategy and tests 2017-07-24 12:12:30 +03:00
Adam Wulkiewicz
925b715f4d [algorithms] direction_code(): Add support for non-cartesian CSes. 2017-07-21 03:36:15 +02:00
Adam Wulkiewicz
6519f7a411 [strategies] Fix geographic area strategy for sphere (a==b), error being NaN result. 2017-07-20 18:27:11 +02:00
Barend Gehrels
0cd5f968cc [traverse] belongs to previous commit, remaining distance needs also
to be calculated for ii turns etc, for clusters.
2017-07-19 19:05:07 +02:00
Barend Gehrels
4082167be8 [traverse] added local typedef and comments to aggregate_operations 2017-07-19 19:03:24 +02:00
Barend Gehrels
982d4936fa [traverse] remove unused function 2017-07-19 19:00:41 +02:00
Barend Gehrels
174ef5e38c [overlay] fix cases where two arcs leave a cluster in same direction,
one longer as the other. Remaining distance needs to be considered.
Including testcase case_recursive_boxes_64 which is fixed by this issue.
2017-07-19 18:59:55 +02:00
Vissarion Fysikopoulos
63396031f1 [distance] Use cross_track_point_box formula in point box distance strategy 2017-07-19 16:02:52 +03:00
Barend Gehrels
497e055639 [overlay] don't check startable for determining has_traversed_turn,
and also check for turns both going in opposite direction (so uu for int)
This fixes case_recursive_boxes_63 (but not for difference yet)
2017-07-19 14:02:59 +02:00
Vissarion Fysikopoulos
2641abacf3 [distance] Add strategy getters for distance pt-box and box-box and add meridian distance computation as special case 2017-07-19 14:26:52 +03:00
Vissarion Fysikopoulos
b313b980b8 Merge with pt-segment distance computation branch 2017-07-19 13:08:07 +03:00
Vissarion Fysikopoulos
072ddb098e [strategies] Enabling pt-box and box-box strategies 2017-07-19 13:06:32 +03:00
Adam Wulkiewicz
77c54c50d9 [algorithms] Fix direction_code for very close coordinates and use it in point_is_spike_or_equal to fix it too. 2017-07-18 14:38:19 +02:00
Vissarion Fysikopoulos
ca2ab199cf [formula] Documentation for distance point segment 2017-07-18 14:00:10 +03:00
Vissarion Fysikopoulos
b8453a3caf [distance] [test] Clean code in distance test and point segment formula 2017-07-18 13:05:15 +03:00
Adam Wulkiewicz
7dcba58943 [algorithms] Use user-defined side strategy in various algorithms
... instead of using the default one created internally.

It affects buffer, is_simple, is_valid, is_convex, point_on_surface,
remove spikes and various overlay algorithms.
2017-07-14 16:13:38 +02:00
Vissarion Fysikopoulos
36232a3cdb [distance] Spheroid passed as parameter, more general strategy getter for distance strategy 2017-07-13 12:52:52 +03:00
Vissarion Fysikopoulos
8b33899ec7 [distance] Point-segment distance formula, strategy and tests 2017-07-13 09:59:10 +03:00
Barend Gehrels
9acd4dcbba [overlay] dont excluded colocated self-turns from check within other geometry 2017-07-12 09:56:23 +02:00
Barend Gehrels
1b71880b4f [intersection] fix intersection pattern where it accidentally took last
one instead of penultimate
2017-07-08 12:45:24 +02:00
Barend Gehrels
30c2b46465 Merge branch 'develop' into bg-prepare
# Conflicts:
#	include/boost/geometry/extensions/algorithms/dissolve.hpp
2017-07-05 17:10:54 +02:00
Barend Gehrels
8012d17ca6 Merge branch 'feature/intvalid' into develop 2017-07-05 17:08:52 +02:00
Barend Gehrels
de8273ab92 [is_valid] fix, using touch_only information, and checking border_point
instead of touching point
2017-07-05 14:37:29 +02:00
Adam Wulkiewicz
a51a331df9 Merge pull request #405 from awulkiew/feature/area_strategy
Add missing propagation of area strategy in buffer, is_valid and overlay.
2017-07-05 13:51:43 +02:00
Adam Wulkiewicz
0b62b81fb4 Merge pull request #403 from awulkiew/fix/non_cart_intersection
Handle degenerated segments near poles in spherical and geographic intersection strategies.
2017-07-05 13:51:31 +02:00
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
Adam Wulkiewicz
a2168a97d9 [overlay] Add missing const&. 2017-07-04 16:03:54 +02:00
Adam Wulkiewicz
e241a9a0b3 Merge pull request #408 from vissarion/patch-3
Fix problematic initialization of strategy passed as contant reference
2017-07-04 17:02:52 +03:00
Adam Wulkiewicz
a911872bf5 [disjoint] Remove unwanted double ; 2017-07-04 15:58:05 +02:00
Adam Wulkiewicz
41cb466a34 Merge pull request #406 from vissarion/patch-1
Fix uninitialized variable in topology check of multilinestrings
2017-07-04 16:55:53 +03:00
Vissarion Fisikopoulos
b6bfbe514a Update get_turn_info_helpers.hpp 2017-07-04 11:17:13 +03:00
Vissarion Fisikopoulos
bcae6f1e81 Update box_box.hpp 2017-07-04 09:58:05 +03:00
Vissarion Fisikopoulos
7ad0c0b8ff Update topology_check.hpp 2017-07-04 09:38:49 +03:00
Adam Wulkiewicz
47e5cf5c96 [extensions][dissolve] Use area strategy got from intersection strategy. 2017-07-04 04:48:13 +02:00
Adam Wulkiewicz
8a12ebdb69 [buffer][is_valid][overlay] Use area strategy got from intersection strategy. 2017-07-04 04:45:37 +02:00
Adam Wulkiewicz
4122cab822 [correct] Allow passing area strategy into correct(). 2017-07-04 04:42:13 +02:00
Adam Wulkiewicz
1026f9fd36 [strategies] Handle degenerated segments near poles in spherical and geographic intersection strategies. 2017-07-02 19:04:12 +02:00
Adam Wulkiewicz
0a56ddd654 [formulas] Fix VS std::max compilation error in vertex_longitude. 2017-06-30 17:00:00 +02:00
Barend Gehrels
5f19440971 Merge branch 'develop' into bg-prepare
# Conflicts:
#	extensions/test/algorithms/dissolve.cpp
#	include/boost/geometry/extensions/algorithms/detail/overlay/dissolver.hpp
#	include/boost/geometry/extensions/algorithms/dissolve.hpp
#	include/boost/geometry/extensions/multi/algorithms/dissolve.hpp
2017-06-28 17:44:08 +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
Barend Gehrels
0de898a004 [union] Fix select_source for self_turn, it should use multi_index 2017-05-20 15:54:57 +02:00
Adam Wulkiewicz
3c1fa1e316 [srs] Support all geometries in projection<>, add concepts and dimension check. 2017-05-19 15:14:50 +02:00
Adam Wulkiewicz
048d3fe53b [srs] Rename proj_exception to projection_exception and use BOOST_THROW_EXCEPTION.
- Rename exception
- Replace throw keyword with BOOST_THROW_EXCEPTION.
- Rethrow with BOOST_RETHROW
2017-05-17 21:39:33 +02:00
Adam Wulkiewicz
4b46351890 [srs] Add missing proj_exception codes in projections.
In some places reformat code around to match Proj4 code.
2017-05-17 20:35:23 +02:00
Adam Wulkiewicz
6002b55607 [srs] Add return statement in base_t_f::inverse to suppress warning. 2017-05-17 20:33:05 +02:00
Adam Wulkiewicz
d9cd15e94f [srs] Improve compile- and run-time error handling.
- Show static mpl assert message if static projection is not invertible.
- Throw exception in dynamic not implemented inverse projection.
- Add 3 new exception types and throw them if:
  - projection id is not specified
  - unkown projection id is passed
  - projection is not invertable
2017-05-17 17:38:25 +02:00
Adam Wulkiewicz
08500cfc18 [srs] Check validity of +n parameter in urm5 projection. 2017-05-17 01:20:10 +02:00
Adam Wulkiewicz
32a8a0a451 [srs] Fix bug with stereographic projection at equator that multiplied equatorial coordinates by 2 (after Proj4). 2017-05-17 01:18:44 +02:00
Adam Wulkiewicz
b4aab6bccd [srs] Add exceptions in robin projection and pass error code to existing ones. 2017-05-17 01:17:10 +02:00
Adam Wulkiewicz
52a6e508a8 [srs] In pj_inv() replace fabs() with bg::math::abs(). 2017-05-17 01:15:04 +02:00
Adam Wulkiewicz
02d57ff52c [srs] Differentiate between proj. not specified and unknown (different exception code/msg). 2017-05-17 01:14:04 +02:00
Adam Wulkiewicz
bbad83ea5d [srs] Fix scaling bug in ocea projection, as fixed in Proj4. 2017-05-16 15:12:41 +02:00
Adam Wulkiewicz
59f4800d79 [srs] Add missing inverse to hammer projection. 2017-05-16 01:34:51 +02:00
Adam Wulkiewicz
70d3cf13ea [srs] Support various calc. types in projections p*, q*, r*, s*, u*, v*.
Add needed constants.
2017-05-15 01:02:31 +02:00
Adam Wulkiewicz
f20f3a4a51 [srs] Support arbitrary calc. type in projections n*, o*.
Add const keywords to arguments of pj_zpoly1*.
2017-05-14 21:40:31 +02:00
Adam Wulkiewicz
6e4f66e0f4 [srs] Support various calc. types in projections k*, l*.
Add needed constants.
2017-05-14 17:57:21 +02:00
Adam Wulkiewicz
c2141ad367 [srs] Support arbitrary calc. type in projections i*, m*, t*, w*.
Add proj_exception ctor taking message.
Add needed constants.
2017-05-14 17:15:00 +02:00
Barend Gehrels
81977f07e6 [overlay] handle ii turn colocated with ux in the same way as with uu 2017-05-13 18:15:00 +02:00
Barend Gehrels
6ddcf4269b [overlay] discard uu selfturns for unions, and ii selfturns for differences 2017-05-13 17:54:24 +02:00
Barend Gehrels
1b20673a1d [intersection] fix cases with self-turns for intersections 2017-05-13 14:51:06 +02:00
Adam Wulkiewicz
086f26650e [srs] Support arbitrary calc. type in projections starting at letters a-h.
Also add/remove common constants.
2017-05-13 04:22:54 +02:00
Adam Wulkiewicz
dcb3e6096f [srs] Add math constants (function templates) used in projections to common file projects.hpp 2017-05-12 18:26:13 +02:00
Adam Wulkiewicz
ba0b7f52d0 [equals] Fix word in comment. 2017-05-12 01:04:07 +02:00
Adam Wulkiewicz
7ac3094416 [srs] Support arbitrary calc. type in all projections/impl functions. 2017-05-11 23:13:11 +02:00
Adam Wulkiewicz
12e07074bd [srs] Support any calculation type in projection parameters and several other internals. 2017-05-11 18:14:38 +02:00
Vissarion Fysikopoulos
bc63ad29af [disjoint] fix review comments 2017-05-11 11:42:22 +03:00
Adam Wulkiewicz
1dad53a4b6 [srs] Fix implicit int to bool warning in aeqd projection. 2017-05-10 21:03:20 +02:00
Adam Wulkiewicz
528270a68f [srs] Finish boostifying recently added code (add inline keywords, change macros to functions, etc.). 2017-05-10 21:02:50 +02:00
Adam Wulkiewicz
358e22d4f6 [srs] Add support for Proj4 vunits/vto_meter (vertical scaling) and lon_wrap. 2017-05-10 19:29:24 +02:00
Adam Wulkiewicz
bef6c5bb96 Merge branch 'develop' into feature/relops_multi_point
Conflicts:
	include/boost/geometry/algorithms/intersects.hpp
	include/boost/geometry/algorithms/touches.hpp
2017-05-10 15:30:27 +02:00
Barend Gehrels
2114c3f7b6 [traverse] remove unintended committed code 2017-05-10 15:04:46 +02:00
Barend Gehrels
4b524fc7ac [union] set visited in clusters, like done in intersection. But now
use rank instead of next ip, which was a TODO item.
This causes one unittest case to fail, which has another reason, its turn
in a cluster is not detected because of finalization information. That is
now solved in a different way.
2017-05-10 14:06:45 +02:00
Barend Gehrels
e1473b41a8 [union] discard all ii turns for union, like uu turns are discarded for intersection.
This is important for validity.
2017-05-10 09:49:30 +02:00
Adam Wulkiewicz
b73cff1a7c [srs] Implement transformation.
- Convert geocent.hpp and pj_transform.hpp from Proj4 to Boost.Geometry.
- Not all features are supported yet (Axes, NAD grids, Height/Z scaling
  missing).
- Add missing Proj4 error codes.
2017-05-10 04:21:12 +02:00
Adam Wulkiewicz
2a657f488a [srs] Divide projection<> into public and detail part allowing to use detail functionality in other parts of the library. 2017-05-10 04:20:38 +02:00
Adam Wulkiewicz
4be7b31d86 [srs] Store error message in proj_exception, convert pj_sterrno from Proj4 to Boost.Geometry. 2017-05-10 04:18:48 +02:00
Barend Gehrels
2ea9884ddd [validity] avoid discarded self-turn in isolated region generation,
and avoid registering uu-self-turns
This fixes the regressions in cases which were handled correctly before,
for intersection
2017-05-08 14:15:14 +02:00
Barend Gehrels
9395371beb [fix] Fix selecting rings after merge with covered_by, this is because
in this branch all the uu turns are discarded for intersections
2017-05-08 10:01:58 +02:00
Barend Gehrels
e52e2a8665 Merge branch 'develop' into feature/intvalid
# Conflicts:
#	test/algorithms/overlay/overlay_cases.hpp
#	test/algorithms/set_operations/intersection/intersection.cpp
#	test/algorithms/set_operations/union/union.cpp
2017-05-06 18:26:49 +02:00
Vissarion Fysikopoulos
4f7956d5ae [disjoint] more cleaning code 2017-05-05 15:57:36 +03:00
Vissarion Fysikopoulos
b7d5f4b849 [disjoint] cleaning code 2017-05-05 14:17:52 +03:00
Adam Wulkiewicz
d133efe071 [srs] Move projections from extensions to main part of the library.
Move files from geometry/extensions/gis/projections to geometry/srs and
geometry/srs/projections.
Move project_transformer to strategies/transform.

Change namespace of bg::projection<> to bg::srs::projection<>.

Move dms_parser from extensions/gis/geographic/strategies to
srs/projections/impl and from strategy::parse namespace to
projections::detail namespace.
2017-05-05 03:46:55 +02:00
Adam Wulkiewicz
355856a0db [relate] Add optimizations for MultiPoint/MultiPoint (sort smaller geometry first, analyse if needed). 2017-05-04 15:46:55 +02:00
Adam Wulkiewicz
4172ee31e5 [touches] Implement for MultiPoint/Geometry using relate(). 2017-05-04 15:45:25 +02:00
Adam Wulkiewicz
f2d1deef38 Merge branch 'develop' into feature/relops_multi_point 2017-05-04 13:39:21 +02:00
Adam Wulkiewicz
41b20b69e9 [crosses][relate] Implement for MultiPoint/LinearOrAreal input combinations. 2017-05-04 13:38:03 +02:00
Adam Wulkiewicz
2c3f2989fc [index] Include only the interface of equals and overlaps. 2017-05-04 13:36:05 +02:00
Adam Wulkiewicz
3b0379b089 [equals][overlaps] Divide the code into interface and implementation part. 2017-05-04 13:35:07 +02:00
Adam Wulkiewicz
105182a03b Merge pull request #386 from awulkiew/feature/geographic
Use envelope-seg and disjoint-seg/box strategies in various algorithms.
2017-05-04 13:14:38 +02:00
Vissarion Fysikopoulos
5cdae7c693 [disjoint] [vertex_longitude] Reviewing cases of disjoint, create new tests, fix corner cases 2017-05-02 18:44:26 +03:00
Adam Wulkiewicz
25d3da4b4b [relate] Add MutliPoint/SingleLorA implementation. 2017-04-27 18:38:44 +02:00
Barend Gehrels
97151eb985 Merge branch 'develop' into feature/intvalid 2017-04-27 10:41:12 +02:00
Adam Wulkiewicz
68a851b750 [intersects][disjoint] Implement algorithms for MultiPoint/Areal. 2017-04-26 19:10:29 +02:00
Adam Wulkiewicz
6eef0c6208 [within] Add small optimization in MultiPoint/LorA (check boundary only if needed). 2017-04-26 15:02:46 +02:00
Vissarion Fysikopoulos
fe1c91577f many cases working, still testing 2017-04-26 12:59:03 +03:00
Adam Wulkiewicz
289bbc6df4 [relops] Implement within and covered_by for MPt/LorA. 2017-04-26 06:19:21 +02:00
Adam Wulkiewicz
d219b00cec [strategies] Enable default within/covered_by strategy for MultiPoints. 2017-04-26 05:19:43 +02:00
Adam Wulkiewicz
300b680a49 [index] Include only relops interfaces or implementations for specific geometries (box/box). 2017-04-26 05:16:39 +02:00
Adam Wulkiewicz
51efd26ae9 [relops] Divide algorithms into interface and implementation parts.
covered_by, intersects, touches, within.
2017-04-26 04:48:54 +02:00
Adam Wulkiewicz
2f533848d6 [overlay] In follow, last_covered_by, pass linestring point instead of midpoint. 2017-04-26 04:35:23 +02:00
Adam Wulkiewicz
a1e8fd101e [overlay] Fix unused typedef in assign_parents. 2017-04-26 04:29:16 +02:00
Adam Wulkiewicz
b8e5cd55b6 [within] Fix initialization of const relate::less in multi_point_multi_point. 2017-04-26 04:25:16 +02:00
Adam Wulkiewicz
1a6446ba66 Merge branch 'develop' into feature/geographic 2017-04-25 03:48:06 +02:00
Adam Wulkiewicz
031d0c2957 [relops] Add/fix dispatches for missing PointLike/PointLike geometries combinations in covered_by, equals, within. 2017-04-24 19:46:52 +02:00
Adam Wulkiewicz
ca55981928 [strategies] Enable within/covered_by default_strategy for MultiPoints. 2017-04-24 19:43:01 +02:00
Adam Wulkiewicz
312476bfbc [projections][strategies] Update/improve project_transformer strategy.
- Implement 3 transformers:
  * project_transformer automatically choosing forward/inverse projection.
  * project_forward_transformer
  * project_inverse_transformer
- Use new projection<> interface and support the same parameters.
- Move all transform strategies into one file and put them in
  bg::strategy::transform namespace.
2017-04-23 03:48:05 +02:00
Adam Wulkiewicz
d9fe6d7cd3 [projections] Copy higher dimensions in projection<> forward/inverse. 2017-04-23 03:47:45 +02:00
Adam Wulkiewicz
fc88955d94 [projections] Revert comments to original format, broken by autoformatting. 2017-04-23 00:06:42 +02:00
Adam Wulkiewicz
ddce41f2c5 [projections] Move back the internal projections representations into bg::projections namespace from bg::projections::detail namespace. 2017-04-22 23:37:47 +02:00
Adam Wulkiewicz
29853b4b91 [projections] Change the interface (namespaces) and relocate parts of the code.
The interface:
- boost::geometry::projection<>
- boost::geometry::proj_exception
- boost::geometry::srs::dynamic
- boost::geometry::srs::proj4
- boost::geometry::srs::epsg
- boost::geometry::srs::static_proj4<>
- boost::geometry::srs::static_epsg<>
- boost::geoemtry::srs::proj::*
- boost::geometry::srs::ellps::*
2017-04-22 03:42:31 +02:00
Adam Wulkiewicz
26fcc420c4 [core][srs][geometry] Move srs::spheroid and srs::sphere from core/ to srs/ directory. 2017-04-22 02:19:27 +02:00
Adam Wulkiewicz
c6663973fd [projections] Replace point types tparams LL and XY with one CalculationType tparam.
- CalculationType is double by default.
- Integral fundamental types and float are promoted to double.
- Pass Parameters type into the internals properly - remove default tparam
  projections::parameters.
2017-04-20 17:03:34 +02:00
Barend Gehrels
7d17bd1e8a Merge branch 'develop' into feature/intvalid 2017-04-20 15:35:34 +02:00
Barend Gehrels
feae471d71 [overlay] Add missing include 2017-04-20 13:17:09 +02:00
Barend Gehrels
dfbb2604bd [sort_by_side] pass OverlayType (TODO item necessary to correctly
handle self-turns)
2017-04-20 12:50:16 +02:00
Barend Gehrels
081860e8dd [sort_by_side] fix (rare) cases where two froms arrive at a turn,
but only one leaves the next turn. This simplifies state to just a boolean.
This fixes cases like case_recursive_boxes_46 for union
2017-04-19 16:32:40 +02:00
Adam Wulkiewicz
4323322472 [projections] Remove explicit keyword from projection<> ctors to allow simpler initialization. 2017-04-18 23:07:46 +02:00
Adam Wulkiewicz
be9f31c6b8 [projections] Improve consistency of dynamic and static projections.
- Initialize default parameters of 3 projections in both static and
  dynamic versions. In static version use projection tags in conditions.
- Add missing lagrng proj. default and WGS84 ellipsoid default to make it
  consistent with the original Proj4.
- In static version initialize ellipsoid Proj4 params directly from passed
  object instead of string parameters.
- Move proj4, epsg, static_proj4 and static_epsg to parameters.hpp
- Remove projections::init() functions.
2017-04-18 23:04:12 +02:00
Adam Wulkiewicz
3089f4d1a4 [projections] In projection<> improve creation of dynamic projection and use detail::pj_init_plus() internally. 2017-04-18 18:21:05 +02:00
Adam Wulkiewicz
5ee0aed7f6 [projections] Derive proj_exception from geometry::exception and override what() function. 2017-04-18 18:19:49 +02:00
Adam Wulkiewicz
2254d869a2 [projections] Throw exception in projection<> ctor if dynamic projection is not created correctly. 2017-04-18 17:54:47 +02:00
Adam Wulkiewicz
29e059ae5d [projections] Add static ellps definitions and fix error in static proj4 projection<>. 2017-04-18 17:45:37 +02:00
Adam Wulkiewicz
02cf69fdfb [core] In radius_access change assertion to Dim < 3 for both sphere and spheroid. 2017-04-18 17:44:21 +02:00
Adam Wulkiewicz
6d478e1489 [projections] Specialize epsg_traits for all already implemented run-time EPSG codes.
- Add specializations into epsg_traits.hpp file.
- Remove specializations from proj/*.hpp files
- Add macro simplifying the specialization
- Remove Point types and Params template parameters from epsg_traits, take
  only EPSG.
- in epsg_traits define proj4 projection tag and SRS sphere/spheroid tag
- in projection<> use these to get the static projection
2017-04-18 03:50:15 +02:00
Adam Wulkiewicz
8af802f3ff [extensions][projections] Add static tags for all projections. 2017-04-18 02:45:17 +02:00
Adam Wulkiewicz
eab7a82880 [extensions][projections] Implement new projection interface.
- Use projections::projection<> as a general projection representation
  both compile-time and run-time.
- Add proj4, epsg, static_proj4, static_epsg parameters passable into
  projection<> either as ctor parameter or template parameter and
  defining type of projection and parameters.
- Don't require creation of factory or proj4 parameters explicitly in the
  code.
- In the implementation of tmerc projection add specializations of newly
  added traits for getting compile-time projection implementation from
  projection tag and SRS model.
- Derive dynamic projections from base_v<> type instead of projection<>.
2017-04-17 16:08:50 +02:00
Adam Wulkiewicz
2780c9dc28 [overlay] In select_rings/update_ring_selection use within instead of covered_by. This fixes dissolve. 2017-04-14 14:40:03 +02:00
Adam Wulkiewicz
f428b9cc8f [extensions][dissolve] Pass strategies into the overlay internals and envelope. 2017-04-14 03:59:45 +02:00
Adam Wulkiewicz
87a1a941f2 Merge branch 'develop' into feature/geographic 2017-04-14 01:39:05 +02:00
Adam Wulkiewicz
dc8ff59096 [extensions][dissolve] Add support for intersection strategy. 2017-04-14 01:07:30 +02:00
Adam Wulkiewicz
6586f6e7b7 [overlay][buffer][test] Use within/covered_by and envelope strategies.
- Pass intersection strategy into range_in_geometry and internally get
  point_in_geometry strategy.
- Add required intersection strategy passing into overlay and buffer
  internals.
- Use envelope strategy in assign_parents.
2017-04-11 00:24:21 +02:00
Adam Wulkiewicz
354ce9a376 [overlay][follow] Check covered_by with strategy. 2017-04-11 00:23:33 +02:00
Adam Wulkiewicz
02f149f012 [is_valid] Check point in polygon exterior ring with strategy. 2017-04-11 00:19:57 +02:00
Adam Wulkiewicz
e3ac044400 [equals][test] Make collect_vectors Ring-order-invariant with normalized_view. 2017-04-09 11:33:00 +02:00
Adam Wulkiewicz
657a5c8090 [equals][test] Fix collect_vectors for open Rings with closeable_view. 2017-04-09 01:46:46 +02:00
Vissarion Fysikopoulos
842a121cf6 [vertex_longitude] [test] Unit tests and corner cases for vertex_longitude formula 2017-04-07 18:07:29 +03:00
Barend Gehrels
9d13a668da Merge branch 'develop' into feature/intvalid 2017-04-05 09:51:21 +02:00
Vissarion Fysikopoulos
d02616948c [formula] [vertex_longitude] Fixing ellipsoidal formula 2017-04-04 18:03:57 +03:00
Adam Wulkiewicz
a29281d143 [strategies] Add missing const and explicit keywords. 2017-03-30 18:20:41 +02:00
Adam Wulkiewicz
8419c27f40 [overlay] Always use first point of a geometry returned by point_on_border().
- In the internals of point_on_border() get Midpoint as template parameter.
- Remove midpoint argument from point_on_border() parameters forcing to
  always return the first point.
- Add range_in_geometry() algorithm checking passed boundary point and/or
  points of a geometry for overlap with the interior/exterior of another
  geometry. This way it's possible to detect if a ring is inside or
  outside another ring even if the first point of a ring is overlapping
  the boundary of another geometry. Note tht this was also possible with
  midpoint.
- Enlarge the ring bounding box by epsilon in order to make the covered_by
  envelope check consistent with corresponding point_in_geometry check.
- Replace covered_by(Pt, Ring) with range_in_geometry() calling
  point_in_geometry().
2017-03-27 19:02:00 +02:00
Barend Gehrels
7f8cb5a1aa Merge branch 'develop' into feature/intvalid 2017-03-26 12:57:28 +02:00
Barend Gehrels
b320ddf8e6 [buffer] Fix segmentation fault for rings (start/finish ring was not called),
including new unit test
2017-03-26 12:49:48 +02:00
Barend Gehrels
20005d6e47 Merge branch 'develop' into feature/intvalid 2017-03-26 11:33:13 +02:00
Barend Gehrels
90c51c21f0 [traverse] combine conditions 2017-03-22 22:30:23 +01:00
Barend Gehrels
042b7124f8 [enrich] remove now redundant code (uu is now always discarded for intersection operations)
and change order, update comment
2017-03-22 22:29:25 +01:00
Barend Gehrels
a96b1da5cc [overlay] fix case (#recursive_boxes_45) where wrong decision was made based on a ux turn 2017-03-22 22:28:16 +01:00
Adam Wulkiewicz
e5dd98482a [algorithms] Pass envelope and disjoint-seg-box strategies into partition in disjoint, is_valid and overlay. 2017-03-22 21:02:11 +01:00
Adam Wulkiewicz
51694bfb0c [get_turns] Pass envelope strategy into sectionalize. 2017-03-22 21:00:55 +01:00
Adam Wulkiewicz
f09e33a30e [sectionalize] Support custom envelope strategy. 2017-03-22 20:58:43 +01:00
Adam Wulkiewicz
3ff1382c61 [strategies] Add envelope-seg and disjoint-seg-box getters to intersection, side and within strategies. 2017-03-22 20:57:35 +01:00
Adam Wulkiewicz
f3f312e42b [strategies][azimuth] Fix apply() function arguments types, replace CalculationType which can be void. 2017-03-22 19:43:29 +01:00
Adam Wulkiewicz
cefe1d04f7 [strategies] Add missing includes in envelope and disjoint strategies. 2017-03-22 19:41:32 +01:00
Adam Wulkiewicz
237bfdbe25 [disjoint] In Seg/Box fix the condition and replace covered_by with disjoint_point_box. 2017-03-22 19:38:34 +01:00
Barend Gehrels
16f2bcf357 [overlay] fix case where a union is traveled. As it now appears, due
to new cluster handling, all uu turns can (and should) be discarded for intersections
2017-03-22 15:10:28 +01:00
barendgehrels
ff79fe7bd0 [traverse][debug] change debug info for candidates and re-add them in cc 2017-03-22 12:08:29 +01:00
barendgehrels
273d1bf4a1 [overlay] pending commit, add strategy to self_turns 2017-03-22 11:51:51 +01:00
barendgehrels
0f9ab8b23a [traverse] Fix remaining distance, like when starting, cc should get first
turn (#mysql_23023665 in buffer).
This also fixes overriding when traverse is not possible (no testcase)
2017-03-22 11:50:36 +01:00
barendgehrels
ace8bdb7f0 [overlay] discard ii turns where two interior rings touch, for union operations.
This fixes case #80. Also, added case #105, testing that in a different way
(limiting solutions)
2017-03-18 20:17:22 +01:00
Adam Wulkiewicz
ed78fc3164 Merge pull request #384 from awulkiew/fix/throwing
Throw exceptions using BOOST_THROW_EXCEPTION.
2017-03-14 19:17:10 +01:00
Adam Wulkiewicz
7bba50172e Merge pull request #380 from vissarion/feature/disjoint_geo_new
Feature/disjoint geo new
2017-03-14 19:15:34 +01:00
Adam Wulkiewicz
0e281523c9 Merge branch 'develop' of github.com:boostorg/geometry into develop 2017-03-14 15:02:51 +01:00
Adam Wulkiewicz
4c6ccc0395 [formulas] Handle vertical geodesics in Sjoberg (intersection at the pole). 2017-03-14 15:01:37 +01:00
barendgehrels
404bd889f5 [traverse] fix case #129/rec boxes_4 by avoiding finalized operations in aggregation 2017-03-13 17:44:28 +01:00
barendgehrels
3cb3d373fb [traverse] remove unused visited_regions parameter 2017-03-13 17:29:37 +01:00
barendgehrels
f9e2119d32 Merge branch 'develop' into feature/intvalid
# Conflicts:
#	include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp
#	test/algorithms/set_operations/intersection/test_intersection.hpp
2017-03-13 16:22:58 +01:00
barendgehrels
a826d5b536 [get_turns] fix: fix distance_measure 2017-03-13 16:09:18 +01:00
barendgehrels
32c422f745 [traverse] fix case #130, starting with cc, using remaining_distance 2017-03-13 15:36:13 +01:00
barendgehrels
5fbf6358bd [overlay] move get_next_turn_index to method of enrichment info, to reuse it later 2017-03-13 15:33:14 +01:00
barendgehrels
1b5fb4444e [traverse] Major commit. Avoid discarding ii turn on interior rings. Detect isolatated
regions (usually inner rings) differently: only once instead of on the
fly, and store it. Set visited in clusters for all parts of the cluster.
2017-03-13 10:52:27 +01:00
Adam Wulkiewicz
51f85b6fe2 [partition] Replace size()==0 with empty() and size()>0 with !empty(). 2017-03-12 00:04:07 +01:00
Adam Wulkiewicz
fd72a1aa16 [algorithms] Support interruption of partition().
- partition() is interrupted if visitor.apply() returns false.
- This mechanism is used instead of throwing self_ip_exception in
  1-geometry (self) get_turns implementation.
2017-03-09 05:40:20 +01:00
Adam Wulkiewicz
4e1c644563 [algorithms][io] Throw exceptions using BOOST_THROW_EXCEPTION. 2017-03-08 22:39:08 +01:00
Vissarion Fysikopoulos
207098b2ff Merging with develop 2017-03-08 18:37:11 +02:00
Vissarion Fysikopoulos
79e9857823 Merge with develop 2017-03-08 17:16:26 +02:00
Adam Wulkiewicz
d857009750 Merge branch 'develop' into bg-prepare 2017-03-08 16:00:42 +01:00
Adam Wulkiewicz
7b5db5b06b [strategies] Replace InverseFormula with FormulaPolicy in geographic strategies.
- Add strategy::andoyer, strategy::thomas and strategy::vincenty policies.
- By default use strategy::andoyer in all strategies consistently.
- Further improve the consistency of parameters by adding default
  Spheroid = srs::spheroid<double> where it's missing.
2017-03-07 20:09:37 +01:00
Adam Wulkiewicz
5985e49d2b [strategies] Rename files in order to make them more consistent across coordinate systems.
CS/algorithm_CS.hpp -> CS/algorithm.hpp
cartesian/cart_intersect.hpp -> cartesian/intersection.hpp
geographic/intersection.hpp -> geographic/intersection_elliptic.hpp
geographic/geodesic_intersection.hpp -> geographic/intersection.hpp
2017-03-07 17:52:54 +01:00
Adam Wulkiewicz
d113eb8cfd [strategies] Improve consistency of strategies.
- In every geographic strategy use the same order of template parameters:
  Formula[, Order], Spheroid, CalculationType.
- Calculate default Order based on Formula.
- Remove ExpandEpsN and LongSegment from template parameters.
- Make strategies' constructors explicit
- Rename relate_cartesian_segments to cartesian_segments,
  relate_geodesic_segments to geographic_segments,
  relate_spherical_segments to spherical_segments, etc.
- Use radius 1 by default in area::spherical strategy for backward
  compatibility.
2017-03-07 16:54:09 +01:00
Adam Wulkiewicz
95a982e492 [core] Improve accuracy of default srs::sphere radius being mean Earth's radius. 2017-03-07 16:49:25 +01:00
Adam Wulkiewicz
95bb1eacc0 Merge branch 'develop' into feature/disjoint_geo_new 2017-03-05 23:43:45 +01:00
Adam Wulkiewicz
62acebb640 [algorithms] Update doc-related description of set operations, is_simple and is_valid.
Distinguish between versions taking and not taking strategies.
2017-03-05 20:22:01 +01:00
Adam Wulkiewicz
db052113a8 [area][strategies] Update doc-related description of area() and related strategies. 2017-03-05 20:19:12 +01:00
Adam Wulkiewicz
d8513265a2 [strategies] Fix compilation errors in geodesic_intersection.
Remove static keyword from strategies getters.
Rename template parameter to avoid shadowing.
2017-03-02 19:24:05 +01:00
Adam Wulkiewicz
a06e6bbb79 [strategies] Rename strategy side::detail::by_azimuth to side::geographic. 2017-03-02 19:23:31 +01:00
Adam Wulkiewicz
6f733b64a9 [index] Add explicit modifier to dynamic_* parameters ctors. 2017-03-02 19:20:49 +01:00
Adam Wulkiewicz
bdd2d2c60c [formula] Fix errors in inverse formulas (manifesting near poles).
vincenty - fix error in formula (missing sqr)
differential_quantities - fix error in formula (wrong equation and lack of normalization)
andoyer - wrong azimuth at south pole
2017-03-02 16:54:36 +01:00
Vissarion Fysikopoulos
f67998885f [core] [disjoint] More radian_access functions for box or segment to radian_access.hpp 2017-03-01 13:44:08 +02:00
Vissarion Fysikopoulos
67759ab979 [disjoint] Fixing coordinate systems degree/radian issue 2017-03-01 13:09:23 +02:00
Adam Wulkiewicz
3f7b2ecb35 [strategies] Add area and distance strategies getters to geodesic intersection strategy.
Also fix typos.
2017-02-27 19:30:02 +01:00
Adam Wulkiewicz
98546ec1dd [strategies] Add general geographic distance strategy taking formula and use it in existing strategies. 2017-02-27 19:12:41 +01:00
Adam Wulkiewicz
0e0f432f27 Merge branch 'develop' into feature/geo_intersection2 2017-02-27 14:44:18 +01:00
Adam Wulkiewicz
447db8358b Merge pull request #381 from awulkiew/feature/setops_strategies
Strategies and variant support in set operations, is_valid and is_simple.
2017-02-27 14:35:16 +01:00
barendgehrels
5e6bb32741 Merge branch 'develop' into bg-prepare
# Conflicts:
#	extensions/test/Jamfile.v2
#	extensions/test/gis/io/wkb/read_wkb.cpp
#	extensions/test/gis/io/wkb/write_wkb.cpp
#	extensions/test/gis/latlong/cross_track.cpp
#	extensions/test/nsphere/nsphere-circle.cpp
#	include/boost/geometry/extensions/contrib/ttmath_stub.hpp
#	include/boost/geometry/extensions/gis/io/wkb/detail/ogc.hpp
#	include/boost/geometry/extensions/gis/io/wkb/detail/parser.hpp
#	include/boost/geometry/extensions/gis/io/wkb/read_wkb.hpp
#	test/arithmetic/cross_product.cpp
2017-02-26 21:24:37 +01:00
Adam Wulkiewicz
54e29a5157 Merge pull request #322 from meastp/add_read_multi_wkb
Support for reading and writing Multi-geometries
2017-02-26 20:09:49 +01:00
Adam Wulkiewicz
f9d9cc2178 [relops] Alter doc comments (versions taking strategies). 2017-02-26 01:37:54 +01:00
barendgehrels
e2781e147a Merge branch 'develop' into feature/intvalid
# Conflicts:
#	include/boost/geometry/algorithms/detail/overlay/overlay.hpp
#	include/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp
#	include/boost/geometry/algorithms/intersects.hpp
#	include/boost/geometry/algorithms/touches.hpp
2017-02-25 20:01:08 +01:00
Adam Wulkiewicz
b03da047a8 [index] Add workaround for libstdc++ bug (gcc 4.8.2) - segfault in nth_element. 2017-02-25 18:50:13 +01:00
barendgehrels
676aa45c6c Minor changes 2017-02-22 09:40:44 +01:00
barendgehrels
caf0b9f7e9 [traverse] fix validity when two holes meet eachother and exlude an
area which should become a separate ring (#43), by passing the already visited
region_ids (which make them less local). It does not solve #35 yet.
2017-02-18 13:32:46 +01:00
barendgehrels
0d95185060 [traverse] fix cases where isolated regions have more turns in between
(cases #41/#128)
2017-02-17 16:24:52 +01:00
barendgehrels
5223efcd58 [traverse] fix operation index 2017-02-17 16:14:45 +01:00
barendgehrels
3fa70829d3 [traverse] fix bug in new code, should have been rwd.turn_index 2017-02-17 11:27:32 +01:00
Adam Wulkiewicz
682cb65f62 [equals] Use area and distance strategies in equals() TrivialCheck. 2017-02-17 05:04:03 +01:00
Adam Wulkiewicz
b3da05740a [is_valid] Add support for strategies. 2017-02-17 05:03:11 +01:00
Adam Wulkiewicz
6bd28d96e6 [is_simple] Add support for strategies. 2017-02-17 05:02:57 +01:00
Adam Wulkiewicz
6f7beaf01a [setops] Support strategies in intersection, difference, sym_difference and union_. 2017-02-17 05:00:57 +01:00
Adam Wulkiewicz
e95d85c552 [strategies] Add area and pt-pt distance strategies getters to intersection strategies. 2017-02-17 04:58:45 +01:00
Vissarion Fysikopoulos
6a2b202eb6 [disjoint] [test] Code cleaning 2017-02-16 16:43:52 +02:00
Vissarion Fysikopoulos
2ef3f99fc3 [disjoint] [test] Strategy inteface, more unit tests, code cleaning 2017-02-16 13:54:14 +02:00
Vissarion Fysikopoulos
1f952671e9 [disjoint] [test] Disjoint algorithm and tests for spherical and geographic systems 2017-02-14 23:48:08 +02:00
Vissarion Fysikopoulos
19de8148e8 [disjoint] Disjoint strategy for spherical 2017-02-11 00:35:09 +02:00
Adam Wulkiewicz
376f777f58 [strategies] Fix compilation error in spherical area strategy. 2017-02-09 16:42:08 +01:00
Adam Wulkiewicz
18a2ed317d Merge pull request #379 from vissarion/feature/fix_envelope
[envelope] [test] Fix the envelope algorithm and add corrected values to tests
2017-02-08 14:32:45 +01:00
Vissarion Fysikopoulos
410536e331 [envelope] [test] Fix the envelope algorithm and add corrected values to tests 2017-02-08 15:18:49 +02:00
Adam Wulkiewicz
7a76400754 [strategies] Store and use Spheroid model object in relate_geodesic_segments strategy. 2017-02-07 23:59:50 +01:00
Adam Wulkiewicz
40cb0f9490 Merge branch 'develop' into feature/geo_intersection2
Conflicts:
	include/boost/geometry/algorithms/detail/azimuth.hpp
	include/boost/geometry/formulas/spherical.hpp
	include/boost/geometry/strategies/spherical/intersection.hpp
	include/boost/geometry/strategies/strategies.hpp
	test/strategies/segment_intersection_sph.cpp

Also modify the interface of relate_geodesic_segments intersection
strategy - take Policy by apply() function argument.
2017-02-07 23:21:26 +01:00
Adam Wulkiewicz
98a655bf42 Merge pull request #378 from awulkiew/feature/relops_strategies
Support for strategies in relational operations.
2017-02-07 20:13:58 +01:00
Adam Wulkiewicz
fe2bdfd169 [disjoint] Rename PiGStrategy to Strategy. 2017-02-07 20:11:45 +01:00
Adam Wulkiewicz
6a1d758416 [formulas][strategies] Propagate Spheroid model from envelope strategy to vertex_latitude formula. 2017-02-07 14:22:33 +01:00
Adam Wulkiewicz
cb35d55b9e [algorithms] Add missing header in detail/azimuth. 2017-02-07 14:21:24 +01:00
Adam Wulkiewicz
98dfb5c349 [formulas] Fix std::min and std::max calls in area_formulas. 2017-02-07 14:20:34 +01:00
Adam Wulkiewicz
13199da09e [envelope] Fix return_envelope, pass missing strategy to resolve_variant:✉️:apply(). 2017-02-07 03:52:33 +01:00
Adam Wulkiewicz
99221ba09c Merge pull request #367 from vissarion/feature/envelope_expand_geo
Feature/envelope expand geo
2017-02-06 22:54:20 +01:00
Adam Wulkiewicz
4e80fab8d9 [strategies] Replace get_radius member function with free function call in geographic area strategy. 2017-02-06 13:52:02 +01:00
Vissarion Fisikopoulos
436c589f41 Merge branch 'develop' into feature/envelope_expand_geo 2017-02-02 13:41:34 +02:00
Vissarion Fysikopoulos
dbe31d9428 [envelope] Resolve conflicts 2017-02-02 13:25:56 +02:00
Adam Wulkiewicz
c277a6c99a Merge pull request #359 from vissarion/feature/area
Feature/area
2017-02-02 00:49:33 +01:00
Vissarion Fysikopoulos
cbf0dd77bf [area] Minor clean of comment 2017-02-01 20:15:42 +02:00
barendgehrels
136f65a039 [traverse] improve getting isolated regions by checking next regions 2017-02-01 16:14:54 +01:00
barendgehrels
33220370dc [traversal] fix take indicated operation 2017-02-01 13:21:28 +01:00
barendgehrels
c8fbb8120d [traverse] remove unused argument 2017-02-01 12:33:37 +01:00
barendgehrels
ec407f4c16 [traversal] move check to separate method, to be extended 2017-02-01 12:21:41 +01:00
barendgehrels
fd55383036 [traversal] work in progress, remove the district (I used temporarily)
with region used elsewhere for the same
2017-02-01 12:00:50 +01:00
barendgehrels
04f4a1de34 [traversal] fix, remove district if it returns 2017-02-01 11:52:18 +01:00
barendgehrels
d299ae23bc [traverse] pending commit, change indentation and small changes in algorithm
of isolated district detection
2017-02-01 11:51:57 +01:00
barendgehrels
cad48a5179 [traverse] remove new isolated (was unused) 2017-02-01 11:49:32 +01:00
Vissarion Fysikopoulos
fd12b69ee6 [area] Addressing comments 2017-01-31 17:55:00 +02:00
Vissarion Fysikopoulos
99c001873d [envelope] Move envelope computation back to algorithm level 2017-01-31 17:35:48 +02:00
Adam Wulkiewicz
55e30d6ad9 Merge branch 'develop' into feature/relops_strategies
Conflicts:
	test/iterators/point_iterator.cpp
2017-01-30 03:07:35 +01:00
Adam Wulkiewicz
d067073c69 [algorithms][strategies] Add missing includes, suppress warnings. 2017-01-29 13:20:05 +01:00
Adam Wulkiewicz
cd14e16b0c [buffer] Adapt buffer to the new interfaces of internal utilities.
Internals being default_strategy services, get_turns and partition.
2017-01-28 04:08:32 +01:00
Adam Wulkiewicz
c62cc56df2 [algorithms] Adapt overlay and set operations to new interfaces of internals.
Internals being default_strategy services, get_turns and partition.
2017-01-28 04:07:00 +01:00
Adam Wulkiewicz
85ea847ee1 [algorithms][strategies] Add support for strategies in relational operations.
- add overloads for all relational operations taking strategy.
- change the interface of get_turns, take strategy.
- change the interface of partition, take overlap and expand policies as
  function parameters instead of struct template parameters.
- specialize collect vectors by Side strategy and use this equals()
  optimization only if it's compatible with passed side strategy.
- move the implementation of disjoint Segment/Box from algorithm to
  strategy.
- add default_strategy service for relate, defining intersection or
  within/covered_by strategies depending on input geometries.
- add default strategy service for disjoint, defining relate or specific
  disjoint strategies.
2017-01-28 04:02:31 +01:00
Adam Wulkiewicz
569da3cc53 [strategies] Modify the interface of winding strategy and tweak within/covered_by default_strategy service.
Winding strategy now takes side strategy as template parameter and in
constructor.
default_strategy now casts geometry tags for both geometries and into more
tags so strategies may be dispatched more conveniently.
2017-01-28 03:46:28 +01:00
Adam Wulkiewicz
d70b1ce843 [strategies] Change interface of intersection strategies.
Instead of taking Policy as struct template parameter take it as apply()
method parameter.
Add members defining types of and returning point_in_geometry and side
strategies.
Make intersection strategies default within/covered_by strategies for L/L,
L/A and A/A geometries.
2017-01-28 02:40:59 +01:00
Vissarion Fysikopoulos
930719bad3 [area] Rename area strategy namespace 2017-01-27 19:41:27 +02:00
barendgehrels
ce42bd91da [traverse] change approach, remove only_turn_on_ring, replace
with assigning region_id to enrichment info, change dection of regions
for intersection operations
and handle differently (still temporarily)
2017-01-25 15:32:30 +01:00
Vissarion Fysikopoulos
d4f08cbcc3 [envelope] Move CS related computation from algorithm to strategy 2017-01-23 15:23:38 +02:00
Vissarion Fysikopoulos
021be6636d [envelope] [expand] MBR strategy for envelope and expand 2017-01-19 17:27:05 +02:00
barendgehrels
177da0d6cb Merge branch 'develop' into feature/intvalid 2017-01-18 10:07:12 +01:00
barendgehrels
8fa80c52b4 Rename op to turn_op to avoid warning 2017-01-18 10:05:56 +01:00
Vissarion Fysikopoulos
42e7a33134 [envelope] Resolve strategy stage for envelope and expand 2017-01-17 17:30:39 +02:00
barendgehrels
0e95caa36d [overlay] skip ii outgoing/returning when, after that, a cc continues.
Plus extra testcase needing this (if self-turns are considered)
2017-01-11 16:56:15 +01:00
barendgehrels
a537112403 Merge branch 'develop' into feature/intvalid 2017-01-11 10:07:41 +01:00
Adam Wulkiewicz
0421a06af5 [policies] Always use FP type for approximation in segment_ratio. 2017-01-06 00:13:01 +01:00
Adam Wulkiewicz
4a488821ab [strategies] Add missing QVM include in matrix_transformers.hpp. 2017-01-04 17:27:03 +01:00
barendgehrels
14b7e142c8 Merge branch 'develop' into feature/intvalid 2017-01-04 15:50:25 +01:00
barendgehrels
f334af7d78 [transform] rename ublas_transformer to matrix_transformer 2017-01-04 15:38:43 +01:00
barendgehrels
ecb87a434b Merge branch 'develop' into feature/intvalid 2017-01-04 12:17:57 +01:00
barendgehrels
138879adb9 [transform] use qvm instead of ublas 2017-01-04 11:55:56 +01:00
Oliver Keyes
2be2272e86 Grammar fix
Should presumably be 'too many tokens' rather than 'too much tokens'
2017-01-01 11:50:19 -08:00
barendgehrels
5113197bbd [overlay] handle self-turns (now conditionally) 2016-12-28 17:46:14 +01:00
barendgehrels
5456e8685d [overlay] take ring size into account for segment distance 2016-12-28 13:08:05 +01:00
barendgehrels
d5b14545a3 [overlay] move logic to determine origin to sort_by_side, taking
into account that there might be more turns on one ring
2016-12-28 11:44:08 +01:00
Adam Wulkiewicz
676e061978 [index] Add missing equals<> specialization in details of equal_to<>. 2016-12-28 03:44:12 +01:00
Adam Wulkiewicz
b8b1cc5c6b [index] Add missing #includes in parameters.hpp 2016-12-27 16:29:19 +01:00
Adam Wulkiewicz
c5b7468291 [relate] Fix compilation error when both geometries use different point types. 2016-12-27 15:21:24 +01:00
barendgehrels
e00ea57e58 [overlay] fix origin calculations for self-turns 2016-12-21 15:17:53 +01:00
barendgehrels
ad2a0a92f1 [overlay] add missing includes 2016-12-21 15:04:45 +01:00
barendgehrels
cb5143c96f Add new parameter to two self intersection calls 2016-12-16 18:42:02 +01:00
barendgehrels
f0dbe24754 Switch-source, if it is the same source (self-turn), always switch (at least for now) 2016-12-16 15:28:34 +01:00
barendgehrels
5cbbd05a69 Add self-turns to the turn collection (still not enabled) 2016-12-16 15:26:53 +01:00
barendgehrels
5bdbfb4c31 Add optional source_index to self_turn_points 2016-12-16 15:25:23 +01:00
Adam Wulkiewicz
88ee4250f0 [strategies] Improve robustness of geodesic intersection strategy.
Reverse segments before analysing them if needed. Make sure the segments
are going from S to N. This way the intersection point calculated by
Sjoberg's intersection formula is always the same for equal but reversed
segments. The latitude is taken into account because this way the accuracy
of result's longitudes is greater.
2016-12-11 01:37:55 +01:00
Adam Wulkiewicz
3abef7e1ea [strategies] Fix a small error on Clang. 2016-12-07 14:00:28 +01:00
Adam Wulkiewicz
b9f6bc7332 [formulas] Fix warnings on Clang. 2016-12-07 13:59:36 +01:00
barendgehrels
d865894234 Merge branch 'develop' into bg-prepare 2016-12-07 13:34:07 +01:00
barendgehrels
57250a3fdd [overlay] fix regression (duplicate polygons) due to last enhancements
in validity of intersections
2016-12-07 13:12:03 +01:00
barendgehrels
8d64bb39c2 [overlay] minor, fix indentation 2016-12-07 13:08:11 +01:00
Adam Wulkiewicz
ee63de6993 [strategies] Add geodesic_intersection geographic strategy.
The strategy use sjoberg intersection (crossing segments intersection
point) formula and chosen inverse formula (sides and distances).
2016-12-06 00:22:06 +01:00
Adam Wulkiewicz
941590b975 [core] Initialize spheroid by default with more precise WGS84 minor axis. 2016-12-06 00:21:03 +01:00
barendgehrels
9a3bb9bf45 [cleanup] remove extensions/inverse.hpp, committed by accident to master 2016-12-04 16:47:29 +01:00
barendgehrels
a6b294a648 Merge branch 'develop' into bg-prepare
# Conflicts:
#	include/boost/geometry/extensions/gis/projections/proj/healpix.hpp
#	include/boost/geometry/extensions/gis/projections/proj/isea.hpp
2016-12-04 16:42:32 +01:00
barendgehrels
809e48ae63 Merge branch 'feature/intvalid' into develop 2016-11-30 13:32:37 +01:00
barendgehrels
efecc02866 [traverse] fix certain cases to recognize starting point during intersection
in a broader context
2016-11-30 12:56:48 +01:00
Adam Wulkiewicz
3d76cde688 [util] Add/modify functions bounded() and longitude_interval_distance_signed(). 2016-11-23 17:44:34 +01:00
barendgehrels
3c58f15105 [traversal] handle non clustered ii turns using sort-by-side 2016-11-23 17:35:29 +01:00
Adam Wulkiewicz
fadd77ff7a [formulas] Improve robustness of sjoberg_intersection formula.
Handle special cases like vertical segments or intersection points behind the geodesic vertex.
Calculate starting point of approximation with Sjoberg02 spherical intersection formula.
First try to use Sjoberg02 Newton's method, if it's unable to calculate the result use more robust Sjoberg07 method.
Add the sjoberg_geodesic representation and enclose geodesic formulas inside.
Use this representation consistently in various methods in sjoberg_intersection.
2016-11-23 17:31:23 +01:00
Barend Gehrels
954bd1b847 Fix github issue #365 : duplicate symbols
Reported as https://github.com/boostorg/geometry/issues/365
2016-11-09 10:18:28 +01:00
Barend Gehrels
36dada3938 Merge branch 'develop' into bg-prepare 2016-11-09 09:36:11 +01:00
Barend Gehrels
9b7ddf85cc [overlay] avoid warning about same_multi1 which is technically redundant
because of template parameter values
2016-11-09 09:30:53 +01:00
Vissarion Fysikopoulos
3fda39ded1 [vertex latitude] Simplify formulas 2016-11-08 13:02:37 +02:00
Barend Gehrels
d2abc37625 Merge branch 'develop' into bg-prepare 2016-11-02 16:39:20 +01:00
Barend Gehrels
71d1d75835 add comment 2016-11-02 15:55:54 +01:00
Barend Gehrels
70e20ddd27 [overlay] fix some validity cases for intersection/difference 2016-11-02 15:55:30 +01:00
Barend Gehrels
794b168817 [overlay] add information about if it is the only turn on a ring, to each op (enriched) 2016-11-02 12:52:46 +01:00
Vissarion Fysikopoulos
b073703fd2 [formulas] comment out and clear some code 2016-10-27 13:57:35 +03:00
Patrick J. LoPresti
decd1dad72 Silence unused parameter warning from GCC/Clang. 2016-10-21 14:53:10 -07:00
Barend Gehrels
843ddb79bf [overlay] add all_to to ragne aggregation 2016-10-19 17:12:51 +02:00
Barend Gehrels
121db33f47 [overlay] add new algorithm to aggregate sort_by_side output per rank, using
incoming/outgoing rings. Usage of this algorithm not yet committed.
2016-10-12 17:58:26 +02:00
Barend Gehrels
c0fdfb3ceb Merge pull request #357 from norbertwenzel/std_array_point_adaptor
Add C++11 std::array point adaptor
2016-10-05 23:34:25 +02:00
Norbert Wenzel
87cc067e04 Add std::array point geometry adaptor
Copied geometries/adapted/boost_array.hpp to std_array.hpp and changed
array type. No checks for availability of std::array are done. Simply
do not include that file when there is no C++11 std::array available.
2016-10-02 12:21:17 +02:00
Adam Wulkiewicz
98d755614c [util] Add longitude_distance_directed() function calculating Lon/LonInterval distance. 2016-09-30 15:32:48 +02:00
Adam Wulkiewicz
8e1bafb0b9 [formulas] Move spherical azimuth and azimuth side code to formulas. 2016-09-30 15:31:13 +02:00
Barend Gehrels
26ae7f5bfa [validity] set is_touching for intersection too. Reverse should be done
for intersection too, but that does not work yet.
2016-09-28 15:41:01 +02:00
Barend Gehrels
9201064990 [validity] fix zone count for intersection operations 2016-09-28 12:22:52 +02:00
Vissarion Fysikopoulos
af2b0c680e [envelope] [expand] [algorithms] [test] Tests for spheroid. 2016-09-19 18:02:35 +03:00
Vissarion Fysikopoulos
dde8368bc7 [envelope] [expand] [algorithms] [test] Code cleaning and copyright info. 2016-09-19 13:52:59 +03:00
Vissarion Fysikopoulos
36af2b870f [envelope] [expand] [algorithms] [test] Envelope and expand algorithms with strategies 2016-09-19 13:37:17 +03:00
Vissarion Fysikopoulos
81e073434c [envelope] Envelope of a segment with strategies 2016-09-13 18:07:52 +03:00
Adam Wulkiewicz
c328e12e7f [formulas] Handle vertical segments and other special cases in sjoberg intersection formula. 2016-09-07 00:03:38 +02:00
Vissarion Fysikopoulos
4c787629ba [area] [formulas] Minor changes. 2016-09-06 18:31:17 +03:00
Vissarion Fysikopoulos
c9d6796b65 [area] [formulas] More accurate spherical term computation; only one azimuth computation call 2016-09-06 17:58:30 +03:00
Mats Taraldsvik
f41ec1880f [io][wkb] Implement support for writing Multi-geometries 2016-09-05 20:17:13 +02:00
Mats Taraldsvik
7555eb3ccc [io][wkb] Implement support for reading Multi-geometries
Adds support for reading Multi-geometries in the WKB data format.
2016-09-05 20:17:13 +02:00
Mats Taraldsvik
a40bbbc69c [algorithms] Added equals for MultiPoint 2016-09-05 20:17:13 +02:00
Vissarion Fysikopoulos
86fbf6a204 [formulas] [vertex_latitude] Method returns both min and max vertex latitude at once. 2016-09-02 17:40:30 +03:00
Vissarion Fysikopoulos
12d99a1827 [formulas] [vertex_latitude] Fix a typo in spehrical and add spherical tests 2016-09-02 15:01:37 +03:00
Vissarion Fysikopoulos
2ba4c0b23a [formulas] Vertex latitude in spherical using spherical_azimuth formulas 2016-09-01 17:08:15 +03:00
Vissarion Fysikopoulos
3aaef83dee [test] [formulas] [vertex_latitude] Fixes and more tests. 2016-09-01 12:17:28 +03:00
Vissarion Fysikopoulos
c74ddfd4d6 [area] Change interface; inverse formula as template template parameter 2016-08-31 18:41:48 +03:00
Barend Gehrels
0d5cf50d97 [colocations] handle todo item, use count from ranked point 2016-08-31 14:07:37 +02:00
Barend Gehrels
e3b424940c [traverse] handle ii as uu for switch_source,
this makes several intersection testcases valid,
and makes one difference case invalid
2016-08-31 13:43:59 +02:00
Vissarion Fysikopoulos
87516b0495 [test] [formulas] Tests for vertex latitude algorithm. 2016-08-31 12:47:40 +03:00
Barend Gehrels
0ece0dfc75 [intersection] remove the two passes because this is now handled before
by the traversal_switch_detector
2016-08-31 11:44:32 +02:00
Vissarion Fysikopoulos
2fdf75333e [formulas] Algorithm for vertex latitude. 2016-08-30 16:58:26 +03:00
Adam Wulkiewicz
0fb9e297ac [algorithms] Fix covered_by() Point/Box and Box/Box in geographic CS. 2016-08-27 02:33:52 +02:00
Adam Wulkiewicz
d4bcd80322 Merge branch 'develop' into feature/geo_intersection2
Conflicts:
	include/boost/geometry/strategies/spherical/intersection.hpp
	Caused by the change of the namespace concept to concepts.
2016-08-24 17:55:27 +02:00
Adam Wulkiewicz
4d9d2714c3 [strategies] Move geographic policies of ECEF intersection strategy into a separate file. 2016-08-24 17:46:58 +02:00
Adam Wulkiewicz
a97d85a31e [strategies] Make agnostic ECEF intersection strategy from spherical intersection strategy.
Implement CalcPolicies used to define the behavior of this strategy:
- great circles intersection
- great elliptic arcs intersection
- experimental elliptic arcs intersection
2016-08-24 17:03:54 +02:00
Adam Wulkiewicz
883fb13511 [formulas] Divide geographic (elliptic arcs) formulas into smaller, more reusable ones. 2016-08-24 16:51:39 +02:00
Adam Wulkiewicz
2f45b5a403 [index] Remove unnecessary includes cycle. 2016-08-22 13:41:56 +02:00
Vissarion Fysikopoulos
93b70ace53 [area] Second round of changes. Spherical area gets srs sphere as parameter and keep a constructor with radius for backward compatibility. 2016-08-19 13:58:47 +03:00
Vissarion Fysikopoulos
64725caeda [area] first round of changes 2016-08-18 14:01:26 +03:00
Vissarion Fysikopoulos
8b555cf1cd [area] LongSegment support 2016-08-17 15:06:30 +03:00
Adam Wulkiewicz
0e9603c4fd [formulas] Handle special cases (degenerated segments, parallel planes, rays missing spheroid) 2016-08-16 03:05:06 +02:00
Vissarion Fysikopoulos
d1c21baf60 merge and resolve conflicts 2016-08-15 19:38:46 +03:00
Vissarion Fysikopoulos
982c58c073 [area] [test] tests for spherical and geographic area 2016-08-15 18:48:40 +03:00
Vissarion Fysikopoulos
1a483d28c2 [area] [formulas] minor changes to improve performance 2016-08-15 12:44:31 +03:00
Adam Wulkiewicz
613fcedd7a [formulas] Add elliptic intersection and improve projected_to_surface(). 2016-08-15 04:32:37 +02:00
Adam Wulkiewicz
509cb089a5 Merge pull request #355 from awulkiew/feature/geo_intersection
Geographic formulas
2016-08-13 19:38:50 +02:00
Vissarion Fysikopoulos
62facdfe86 [area] fix accuracy (normalize sin cos) 2016-08-13 15:31:28 +03:00
Vissarion Fysikopoulos
fb092ca86d [area] maxima code; Clenshaw and Horner algorithms; fix an error (reduced length) 2016-08-12 21:58:24 +03:00
Barend Gehrels
7fc45bef3f Avoid using std::cout (unless we debug), ticket #12289 2016-08-12 10:24:50 +02:00
Barend Gehrels
d8ebd49a70 Remove warnings about operation_index, cluster_index 2016-08-12 10:08:20 +02:00
Adam Wulkiewicz
0f7a923272 Merge branch 'feature/geo_intersection' into feature/geo_intersection2 2016-08-11 18:31:32 +02:00
Adam Wulkiewicz
41346c1534 [formulas] Handle special cases, replace temporary constants.
Suppress warnings.
Improve style.
2016-08-11 17:27:25 +02:00
Adam Wulkiewicz
b30806971a [formulas] Add projected_to_surface() function calculating the intersection of 3d ray and surface of unit spheroid 2016-08-10 23:15:52 +02:00
Adam Wulkiewicz
84e3ae417a [formulas] Add projected_to_xy() function for 3d point on ellipsoid.
A function calculates the coordinates of the intersection of a line
perpendicular to the surface of ellipsoid and intersecting XY plane at
geodesic latitude angle.
2016-08-10 13:55:06 +02:00
Vissarion Fysikopoulos
31235117f4 [area] series evaluation for spherical and geographic area 2016-08-10 12:29:14 +03:00
Barend Gehrels
8b4c1da2c6 Merge branch 'develop' into bg-prepare
Conflicts:
	extensions/example/gis/projections/p03_projmap_example.cpp
	extensions/test/algorithms/dissolve.cpp
	include/boost/geometry/extensions/algebra/algorithms/assign.hpp
	include/boost/geometry/extensions/algebra/algorithms/rotation.hpp
	include/boost/geometry/extensions/algebra/algorithms/transform_geometrically.hpp
	include/boost/geometry/extensions/algebra/algorithms/translation.hpp
	include/boost/geometry/extensions/algebra/geometries/concepts/check.hpp
	include/boost/geometry/extensions/algebra/geometries/concepts/matrix_concept.hpp
	include/boost/geometry/extensions/algebra/geometries/concepts/quaternion_concept.hpp
	include/boost/geometry/extensions/algebra/geometries/concepts/rotation_matrix_concept.hpp
	include/boost/geometry/extensions/algebra/geometries/concepts/rotation_quaternion_concept.hpp
	include/boost/geometry/extensions/algebra/geometries/concepts/vector_concept.hpp
	include/boost/geometry/extensions/algebra/geometries/matrix.hpp
	include/boost/geometry/extensions/algebra/geometries/quaternion.hpp
	include/boost/geometry/extensions/algebra/geometries/rotation_matrix.hpp
	include/boost/geometry/extensions/algebra/geometries/rotation_quaternion.hpp
	include/boost/geometry/extensions/algebra/geometries/vector.hpp
	include/boost/geometry/extensions/algorithms/connect.hpp
	include/boost/geometry/extensions/algorithms/detail/overlay/dissolver.hpp
	include/boost/geometry/extensions/algorithms/detail/overlay/split_rings.hpp
	include/boost/geometry/extensions/algorithms/dissolve.hpp
	include/boost/geometry/extensions/algorithms/distance_info.hpp
	include/boost/geometry/extensions/algorithms/midpoints.hpp
	include/boost/geometry/extensions/algorithms/offset.hpp
	include/boost/geometry/extensions/algorithms/parse.hpp
	include/boost/geometry/extensions/algorithms/remove_holes_if.hpp
	include/boost/geometry/extensions/algorithms/remove_marked.hpp
	include/boost/geometry/extensions/algorithms/selected.hpp
	include/boost/geometry/extensions/gis/io/veshape/write_veshape.hpp
	include/boost/geometry/extensions/nsphere/geometries/concepts/check.hpp
	include/boost/geometry/extensions/nsphere/geometries/concepts/nsphere_concept.hpp
	include/boost/geometry/extensions/nsphere/geometries/nsphere.hpp
2016-08-10 10:06:50 +02:00
Barend Gehrels
3ce8872b68 [traverse] remove uused type warning 2016-08-10 09:54:57 +02:00
Adam Wulkiewicz
65bb0dcb41 [formulas] Add geo_to_cart3d() calculating north and east vectors together with converted point. 2016-08-09 21:02:54 +02:00
Adam Wulkiewicz
9a63204ac8 [formulas] Add eccentricity_sqr() and geo<->cart3d conversions. 2016-08-06 13:48:15 +02:00
Adam Wulkiewicz
5868367628 [formulas] Move flattening() from algorithms/detail to formulas. 2016-08-06 13:45:59 +02:00
Barend Gehrels
25dbd863e1 Merge pull request #353 from jhunold/set_type
Fix int vs. signed_size_type mismatch
2016-08-03 08:18:13 +02:00
Adam Wulkiewicz
4524125c7f [formulas] Suppress unused variable warnings. 2016-08-02 21:53:30 +02:00
Vissarion Fysikopoulos
597efb93e5 [area] functional functions for spherical and geographic area 2016-08-02 18:15:51 +03:00
Adam Wulkiewicz
640e91c96a [formulas] Fix and improve accuracy of thomas_direct formula.
Handle special case of azimuth12 in {0, -180, 180} deg.
If |azimuth12| > pi flip the geodesic vertically to keep the azimuth
closer to 0.
Tests showed that if azimuth12 is close to 180 the accuracy is low.
2016-08-02 16:44:19 +02:00
Adam Wulkiewicz
fc1b50b6ef [formulas] Add geographic segments intersection formula using spheroidal gnomonic projection. 2016-07-31 02:48:05 +02:00
Adam Wulkiewicz
39ea7f4bc8 [formulas] Handle geodesics lying on equator in Thomas direct. 2016-07-30 04:20:13 +02:00
Adam Wulkiewicz
2a426d2211 [formulas] Handle segments lying on equator in Sjoberg's intersection. 2016-07-30 04:16:40 +02:00
Adam Wulkiewicz
36f64790df [formulas] Improve diff quantities formula.
Expand integral to 3rd order.
Take Order as template parameter.
Implement 2 expansions: in f and in e'^2.
2016-07-29 20:55:38 +02:00
Adam Wulkiewicz
154fc83814 [formulas] Add Sjoberg's geodesics' intersection formula. 2016-07-28 01:59:27 +02:00
Barend Gehrels
f8d4abbef5 [doc] fix doxygen warning, document clusters parameter 2016-07-27 18:12:29 +02:00
Barend Gehrels
3e4396fc23 [colocations] remove unused type 2016-07-27 17:39:51 +02:00
Barend Gehrels
77afac2e15 Make double the default type for SVG svg-point-types (SVG supports floating point) 2016-07-27 17:05:01 +02:00
Barend Gehrels
d3e572ede3 Rename namespace concept to concepts, because concept is a new keyword 2016-07-27 15:51:28 +02:00
Jürgen Hunold
8ac1d499a7 Fix int vs. signed_size_type mismatch
Introduced in f5b4e4a9fa
2016-07-26 08:48:14 +02:00
Barend Gehrels
912c263dbb [dissolve] take the dissolve overlay type (which is neater, but
for the rest does not change anything for dissolve yet)
2016-07-20 17:31:20 +02:00
Barend Gehrels
ae2a127e91 [dissolve] fix compilation after several changes in overlay implementation 2016-07-20 16:54:06 +02:00
Barend Gehrels
bd2e08ce1f [debug] add info about switch result 2016-07-20 10:37:18 +02:00
Barend Gehrels
5ec0bc52d4 [colocations] handle exception for difference in another way 2016-07-20 10:35:36 +02:00
Vissarion Fysikopoulos
9e3f1c6982 remove files to resilve conflict 2016-07-18 13:33:10 +03:00
Vissarion Fysikopoulos
271f427bde [area] formulas for spherical and geographic areas 2016-07-18 12:03:26 +03:00
Adam Wulkiewicz
50d9fe37d8 [formulas] Add thomas_direct and move result_direct into separate file. 2016-07-15 03:05:02 +02:00
Adam Wulkiewicz
86932c34e2 [formulas] Fix error in ellipsoidal gnomonic projection (switched lon and lat). 2016-07-15 03:03:58 +02:00
Adam Wulkiewicz
1d8938d53f [formulas] Add ellipsoidal gnomonic projection.
The projection was proposed by C.F.F. Karney in "Algorithms for geodesics".
On ellipsoid of revolution (spheroid).

The projection takes geodesic inverse and direct formulas used internally
as template parameters.
2016-07-14 20:56:07 +02:00
Adam Wulkiewicz
a31669b958 [formulas] Add calculation of differential quantities to vincenty_direct. 2016-07-14 20:51:48 +02:00
Adam Wulkiewicz
3b0c885575 [formulas] Add and use new differential_quantities<...>::apply() overload. 2016-07-14 18:03:24 +02:00
Adam Wulkiewicz
6818ad7bae [formulas] Enable 2nd order approximation components in thomas_inverse. 2016-07-14 17:54:55 +02:00
Adam Wulkiewicz
ca1a911576 [formulas][strategies] Move formulas from algorithms/detail to formulas directory. 2016-07-14 02:04:00 +02:00
Adam Wulkiewicz
08ca335416 [strategies] Use new bg::formula namespace. 2016-07-14 00:57:54 +02:00
Adam Wulkiewicz
1244ec6a09 [formulas] Add results into vincenty direct and inverse.
Add reverse azimuth to vincenty_direct.
Add reduced length and geodesic scale to vincenty_inverse.

Change the namespace containing direct and inverse formulas from bg::detail to bg::formula.
Change the name of inverse_differential_quantities to differential_quantities.
2016-07-14 00:53:17 +02:00
Barend Gehrels
e51512d9cd [buffer] fix compilation by adding specialization for pointorder on buffered ring collections 2016-07-13 10:40:14 +02:00
Adam Wulkiewicz
3ac8b12d20 [formulas] Add reverse azimuth, reduced length and geodesic scale calc in vincenty inverse. 2016-07-09 04:41:09 +02:00
Adam Wulkiewicz
c8a1e75570 [formulas] Add reverse azimuth, reduced length and geodesic scale calc in andoyer and thomas inverse. 2016-07-08 16:04:33 +02:00
Vissarion Fysikopoulos
3a2ecb68c1 [area] trapezoidal strategy and some fixes for huiller 2016-07-08 11:34:55 +03:00
Barend Gehrels
389887eaaa [colocations] fix the issue for ccw 2016-07-06 14:25:30 +02:00
Barend Gehrels
08f87517b7 [colocations] also discard interior-ring turns with a ux 2016-07-06 13:31:11 +02:00
Barend Gehrels
ff330e364a Merge branch 'develop' into feature/cluster_touch 2016-07-06 12:30:50 +02:00
Barend Gehrels
cacb8c4af5 [buffer] discard turns instead of setting them to blocked, because that
might discard valid turns during the colocation check
2016-07-06 12:29:10 +02:00
Barend Gehrels
d62705303a [overlay] minor debug addition 2016-07-06 12:01:24 +02:00
Barend Gehrels
b46805107b Merge branch 'develop' into feature/cluster_touch
Conflicts:
	include/boost/geometry/algorithms/detail/overlay/handle_touch.hpp
	test/algorithms/overlay/Jamfile.v2
	test/algorithms/set_operations/difference/difference.cpp
	test/algorithms/set_operations/union/union.cpp
2016-06-29 13:18:51 +02:00
Barend Gehrels
5317769686 [traverse] skip/fix switching decision for uu-turns in buffer, where (for deflate)
region approach does not work.
This might result in invalid polygons, but keeping it might result in
incorrect output
2016-06-29 13:07:03 +02:00
Barend Gehrels
a7a86f63bd [traverse] replace member variable by type for buffer 2016-06-29 13:05:58 +02:00
Barend Gehrels
2d0a00fb72 [overlay] add overlay_buffer (to be splitted into inflate/deflate), pass
it to traverse, add metafunction to convert from overlay_type to operation_type
2016-06-29 12:51:49 +02:00
Barend Gehrels
9d78bc6c2d [traverse] add toto comment 2016-06-29 11:51:05 +02:00
Barend Gehrels
f5b4e4a9fa [traverse] extract propagation of regions to a separate method
and other minor refactoring
2016-06-29 11:50:45 +02:00
Barend Gehrels
1033a77205 [colocations] make implementation/exception for difference (Reverse) 2016-06-29 11:47:37 +02:00
Adam Wulkiewicz
4fd9329305 [geometry] Change #include's filename in geometry.hpp 2016-06-23 15:08:35 +02:00
Adam Wulkiewicz
9f1b921368 Merge pull request #352 from awulkiew/feature/svg_variant
Add variant support for SVG
2016-06-23 14:36:29 +02:00
Barend Gehrels
0879dccc81 [traversal] handle clustered turns with interior/exterior touching point by
discarding those turn_points (because detecting that in cluster or switch
and adapt behaviour is way more complex)
2016-06-22 18:44:17 +02:00
Adam Wulkiewicz
7ec2706d50 [index] Fix invalid bounds check for contains() predicate. 2016-06-21 22:11:17 +02:00