示例#1
0
    void operator() (multi_polygon<T> const& mpoly1, multi_polygon<T> const& mpoly2) const
    {
        if (mpoly1.size() != mpoly2.size())
        {
            REQUIRE(false);
        }

        for (auto const& poly : zip_crange(mpoly1, mpoly2))
        {
            (*this)(poly.template get<0>(),poly.template get<1>());
        }
    }
multi_polygon<T> reproject_internal(multi_polygon<T> const & mpoly, proj_transform const& proj_trans, unsigned int & n_err)
{
    multi_polygon<T> new_mpoly;
    new_mpoly.reserve(mpoly.size());
    for (auto const& poly : mpoly)
    {
        polygon<T> new_poly = reproject_internal(poly, proj_trans, n_err);
        if (!new_poly.exterior_ring.empty())
        {
            new_mpoly.emplace_back(std::move(new_poly));
        }
    }
    return new_mpoly;
}
示例#3
0
 result_type operator() (multi_polygon<T> const& multi_poly) const
 {
     if (multi_poly.empty())
     {
         // This return is due to bug in boost geometry once it is fixed it can be removed
         // https://svn.boost.org/trac/boost/ticket/11710
         return true;
     }
     for (auto const& poly : multi_poly)
     {
         if (!(*this)(poly)) return false;
     }
     return true;
 }