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; }