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