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