|
Geometry : |
Subject: [geometry] Dissolve rescale_policy
From: Johan Doré (jdh_at_[hidden])
Date: 2016-03-04 12:43:11
Dear Boost Geometry
In version 1.60 wonder if there is an reason for the no_rescale_policy in the dissolve function:
inline void dissolve(Geometry const& geometry, Collection& output_collection)
{
concept::check<Geometry const>();
typedef typename boost::range_value<Collection>::type geometry_out;
concept::check<geometry_out>();
dispatch::dissolve
<
typename tag<Geometry>::type,
typename tag<geometry_out>::type,
Geometry,
geometry_out
>::apply(geometry, detail::no_rescale_policy(), std::back_inserter(output_collection));
}
Changing it to the robust policy:
inline void dissolve(Geometry const& geometry, Collection& output_collection)
{
concept::check<Geometry const>();
typedef typename boost::range_value<Collection>::type geometry_out;
concept::check<geometry_out>();
typedef typename geometry::rescale_policy_type
<
typename geometry::point_type<Geometry>::type
>::type rescale_policy_type;
rescale_policy_type robust_policy = geometry::get_rescale_policy<rescale_policy_type>(geometry);
dispatch::dissolve
<
typename tag<Geometry>::type,
typename tag<geometry_out>::type,
Geometry,
geometry_out
>::apply(geometry, robust_policy, std::back_inserter(output_collection));
}
Seems to correctly dissolve a larger range of invalid polygons.
I therefore wonder if this change I recommendable and should be included?
Best regards
Johan
Geometry list run by mateusz at loskot.net